什么 - >用Ruby表示

时间:2013-05-02 12:10:59

标签: ruby-on-rails ruby

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

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

那么这个符号会做什么?

2 个答案:

答案 0 :(得分:6)

在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}" } 

答案 1 :(得分:4)

这是 lambda literal 。检查此示例:

 > plus_one = ->(x){x+1}
 => #<Proc:0x9fbaa00@(irb):3 (lambda)> 
 > plus_one.call(3)
 => 4 

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

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