Забелязах някакво интересно използване на ||=
както по-долу -
Код 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]