`->` 带作用域的运算符

`->` operator with scopes

下面的->运算符是什么?

scope :published, -> { where(published: true) }

scope 是一种方法,:published 是作为参数传递的符号,这让我相信 -> { where(published: true) } 构成了下一个参数。由于存在 > 字符,-> 不是有效的方法名称。

它被称为 lambda 字面量,只是创建 lamda 的一种简短方式。以下相同:

double = -> (x) { 2 * x }
double.call(10) # => 20

相当于:

double = lambda {|x| 2 * x }
double.call(10) # => 20

如果您不熟悉 lambda,请查看 ruby-doc 了解更多详细信息 http://ruby-doc.org/core-2.0.0/Proc.html#method-i-lambda-3F

此外,请按照 Whosebug 线程进行结帐 What do you call the -> operator in Ruby?