在JavaScript中我可以做类似的事情:
var foo = function(){
var a = 5;
a = a*a;
return a;
}();
Run Code Online (Sandbox Code Playgroud)
所以我可以定义一次只使用一次的匿名函数.我在尝试,但我的做法是错误的:
foo = {
a = 5
a = a*a
return a
}
#=> SyntaxError: unexpected '\n'...
foo = do
a = 5
a = a*a
a
end
#=> SyntaxError: unexpected keyword_do_block...
foo = {
a = 5
a = a*a
a
}()
#=> SyntaxError: unexpected '\n'...
Run Code Online (Sandbox Code Playgroud)
好吧,你可以在Ruby lambda中使用
foo = ->(a) { a * a }
foo.call(4) # => 16
Run Code Online (Sandbox Code Playgroud)
Proc对象是已绑定到一组局部变量的代码块.一旦绑定,代码可以在不同的上下文中调用,并仍然访问这些变量.