Ruby:有点像匿名函数吗?

时间:2015-02-26 09:30:52

标签: 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'...

1 个答案:

答案 0 :(得分:5)

好吧,你可以在Ruby lambda

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

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

阅读此When to use lambda, when to use Proc.new?