我注意到||=
以下一些有趣的用法 -
代码 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]