J'ai des variableschaîne Convertir nom variable Ruby
<% mon_has_two_sets_of_working_hours = 0 %>
<% tue_has_two_sets_of_working_hours = 0 %>
<% wed_has_two_sets_of_working_hours = 0 %>
Je souhaite modifier les valeurs de ces variables dynamiquement.
<% days_array = ['mon', 'tue', 'wed'] %>
<% days_array.each do |day| %>
<% if condition? %>
# here i want to set %>
<% "#{day}__has_two_sets_of_working_hours" = 1 %>
end
end
La valeur n'est pas affectée. Est-il possible d'attribuer dynamiquement une valeur à une variable?
Faites, utilisez, utilisez des tableaux (ou des tables de hachage) pour cela. –
La réponse à [2530112] (http://stackoverflow.com/questions/2530112) devrait aider, il recommande 'instance_variable_set'. –
Créer dynamiquement un nom de variable à la volée est faisable dans certaines langues, y compris Ruby, mais est tombé en disgrâce depuis des années, et est considéré comme une curiosité surtout. Cela conduit à la confusion qui conduit à des problèmes de maintenance, donc contournez le problème et utilisez un hash. Cela peut également conduire à des problèmes de sécurité si les noms de variables proviennent d'une entrée fournie par l'utilisateur, ou pourrait causer des bogues bizarres si un nom est entré en collision avec une variable précédemment créée. –