||=
以下のような興味深い使用法に気づきました-
コード 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
gets が に初期化されるのはなぜ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]