Назначение хеша внутри каждого не работает
Это:
(0..8).each do |n|
"a_#{n}" = {}
end
выдает мне ошибку "синтаксическая ошибка, неожиданная '=', ожидая keyword_end". Я хотел создать a_0 = {}
, a_1 = {}
, a_2 = {}
и т.п.
3 ответа
Я думаю, что вы хотите массив хешей.
a = []
(0..8).each do |n|
a[n] = {}
end
Результат:
a #=> [{}, {}, {}, {}, {}, {}, {}, {}, {}]
a[0] #=> {}
a[1] #=> {}
...etc...
хотя в зависимости от того, что вам нужно делать дальше, этот тип инициализации может не потребоваться.
binding.instance_eval do (0..8).each do |i|
local_variable_set("a_#{i}", {})
...
end end
Без плохой магии вы не получите нужную вам функциональность (есть способы сделать это, но они плохие и хакерские). Вместо этого используйте хеш или массив.