Я заметил интересное использование ||=
, как показано ниже:
Код 1
array_1 ||= begin
(1..5).to_a.map {|el| el*10}
end
puts array_1.to_s # [10,20,30,40,50]
Поэтому я выполнил его следующую модифицированную версию -
Код 2
array_2 ||= def some_method
(1..5).to_a.map {|el| el*10}
end
puts array_2 # prints nothing
puts array_2.class # NilClass
puts some_method.to_s # [10,20,30,40,50]
- Почему
array_2
инициализируетсяnil
? - Можно ли вызвать
some_method
с помощью объектаarray_2
? как?
ОБНОВИТЬ
Это то, что я сделал для вопроса 2
array_2 ||= "We've got #{def some_method;(1..5).to_a.map {|el| el*10};end;array_2.send(:some_method)}"
puts array_2 # We've got [10, 20, 30, 40, 50]