什么 – >在Ruby中的意思

我在狂欢商业中看到了这一点。

go_to_state :confirm, if: ->(order) { order.confirmation_required? } 

那么这个符号会做什么?

这是一个lambda文字 。 检查此示例:

  > plus_one = ->(x){x+1} => # > plus_one.call(3) => 4 

lambda文字是Proc的构造函数。 Proc是一种将代码块分配给变量的方法。 在此之后,您可以根据需要多次使用不同的参数调用代码块。

这是你可以在ruby中传递“函数”作为参数的方法。 在许多语言中,您可以传递对函数的引用。 在ruby中,您可以传递Proc对象。

在Ruby 1.9中,您可以使用stab运算符->来创建lambda。

 l1 = lambda { puts "I'm a lambda" } l2 = -> { puts "I'm a lambda" } 

操作员也接受参数。

 l1 = lambda(name) { puts "I'm a #{name}" } l2 = ->(name) { puts "I'm a #{name}" }