Ruby `->;`具有作用域的运算符

Ruby `->;`具有作用域的运算符,ruby,lambda,literals,Ruby,Lambda,Literals,下面的->运算符是什么 scope :published, -> { where(published: true) } scope是一个方法,:published是一个作为参数传递的符号,这让我相信->{where(published:true)}构成了下一个参数->不是有效的方法名称。它被称为lambda literal,只是创建lamda的一种简单方法。以下是相同的: double = -> (x) { 2 * x } double.call(10) # => 20 相

下面的
->
运算符是什么

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

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

它被称为lambda literal,只是创建lamda的一种简单方法。以下是相同的:

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

double = lambda {|x| 2 * x }
double.call(10) # => 20
如果您不熟悉lambdas,请查看ruby doc以了解更多详细信息


此外,在StackOverflow线程之后的签出

Google for ruby lambda operatorIt被称为“lambda literal”或“Thanky lambda”。这只是一种创造lamda的方式。