我经常在 JavaScript 中这样做
some_var || some_var = function(){ return "blah"}();
我想知道Ruby中的等效方法,以便我可以执行。
some_var ||= # sequence of operations
编辑
我注意到Proc.new.call
,但我也在别人的代码中发现了这个:
a ||= begin
# do some stuff
# return some stuff
end
这是否等同于使用
Proc.new.call
??编辑2 人们似乎对我想要实现的目标感到困惑。在JavaScript中想象一下:
function someExpensiveFunction(){
# do some really expensive stuff
return "some expensive calculations"
}
a || a = someExpensiveFunction();
显然,一旦设置a
...调用一次昂贵的函数...在这种情况下我不关心作用域,我只需要我的返回值是一系列事件的计算序列而不是一个单一的值。
我相当确定我上面的示例a ||= begin; ... end;
是等效的...