Чтобы присвоить вещи динамическому имени переменной, вам нужно использовать что-то вроде eval
:
array.each do |value|
eval "#{value} = Word.new"
end
но проверьте, что это то, что вам нужно - вам следует избегать использования eval
для решения задач, которые действительно требуют различных структур данных, поскольку трудно отлаживать ошибки, созданные с помощью eval, и может легко вызвать нежелательное поведение. Например, вам может понадобиться хэш слов и связанных объектов, например
words = {}
array.each do |value|
words[value] = Word.new
end
, который не будет загрязнять ваше пространство имен тоннами Word
объектов.