4

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

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

那么这个符号会做什么呢?

4

2 回答 2

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}" } 
于 2013-05-02T12:15:40.730 回答
4

它是一个lambda 字面量。检查这个例子:

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

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

这就是您可以在 ruby​​ 中将“函数”作为参数传递的方式。在许多语言中,您可以传递对函数的引用。在 ruby​​ 中,您可以传递一个 Proc 对象。

于 2013-05-02T12:14:59.040 回答