mam zmienneKonwersja ciąg do nazwy zmiennej w 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 %>
Chcę zmienić wartości tych zmiennych dynamicznie.
<% 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
Wartość nie jest przydzielana. Czy istnieje sposób na dynamiczne przypisanie wartości do zmiennej?
Do, do, używaj do tego tablic (lub skrótów). –
Odpowiedź na [2530112] (http://stackoverflow.com/questions/2530112) powinna pomóc, zaleca 'instance_variable_set'. –
Dynamiczne tworzenie nazwy zmiennej w locie jest możliwe w niektórych językach, w tym także w Ruby, ale od lat traci na popularności i jest uważane za ciekawość. Prowadzi to do zamieszania, które prowadzi do problemów konserwacyjnych, więc obejść problem i użyć hasha. Może to również prowadzić do problemów z bezpieczeństwem, jeśli nazwy zmiennych pochodzą z danych dostarczonych przez użytkownika lub mogą spowodować dziwne błędy, jeśli nazwa zderzy się z wcześniej utworzoną zmienną. –