Ruby:有点像匿名函数吗?

WBAR 1 javascript ruby

在JavaScript中我可以做类似的事情:

var foo = function(){
  var a = 5;
  a = a*a;
  return a;
}();

所以我可以定义一次只使用一次的匿名函数.我在尝试,但我的做法是错误的:

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'...

Arup Rakshit.. 5

好吧,你可以在Ruby lambda中使用

foo = ->(a) { a * a }
foo.call(4) # => 16

Proc对象是已绑定到一组局部变量的代码块.一旦绑定,代码可以在不同的上下文中调用,并仍然访问这些变量.

阅读本文何时使用lambda,何时使用Proc.new?.