Ruby/Rails中的 - >(破折号大于)运算符是什么

Jav*_*mae 8 ruby ruby-on-rails

我刚刚在Rails应用程序中遇到以下代码行:

scope :for_uid, ->(external_id) { where(external_id: external_id) }
Run Code Online (Sandbox Code Playgroud)

什么是->运营商意味着什么?这对谷歌来说很难.

Mar*_*pka 15

这是语法糖.

->(external_id) { where(external_id: external_id) }
Run Code Online (Sandbox Code Playgroud)

等于:

lambda { |external_id| where(external_id: external_id) }
Run Code Online (Sandbox Code Playgroud)


sam*_*uil 6

这是新的lambda表示法.此语法在ruby 1.9中引入,用于定义未命名的函数.

在您的示例中,它是由未命名函数定义的范围.


Ron*_*lic 5

->运营商在Ruby 1.9中引入旧的简写语法lambda功能.它的行为几乎与lambda函数相同,但允许您指定块外的参数:

lambda {|param| puts param }

# becomes

-> (param) { puts params }
Run Code Online (Sandbox Code Playgroud)