我在疯狂的商业中看到了这一点。
go_to_state :confirm, if: ->(order) { order.confirmation_required? }
那么这个符号会做什么呢?
我在疯狂的商业中看到了这一点。
go_to_state :confirm, if: ->(order) { order.confirmation_required? }
那么这个符号会做什么呢?
在 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}" }
它是一个lambda 字面量。检查这个例子:
> plus_one = ->(x){x+1}
=> #<Proc:0x9fbaa00@(irb):3 (lambda)>
> plus_one.call(3)
=> 4
lambda 文字是Proc的构造函数。AProc
是一种将代码块分配给变量的方法。在此之后,您可以使用不同的参数再次调用您的代码块,根据需要多次调用。
这就是您可以在 ruby 中将“函数”作为参数传递的方式。在许多语言中,您可以传递对函数的引用。在 ruby 中,您可以传递一个 Proc 对象。