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

时间:2013-07-15 14:19:55

标签: ruby-on-rails ruby

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

scope :for_uid, ->(external_id) { where(external_id: external_id) }

->运算符是什么意思?这对谷歌来说很难。

3 个答案:

答案 0 :(得分:15)

这是语法糖。

->(external_id) { where(external_id: external_id) }

等于:

lambda { |external_id| where(external_id: external_id) }

答案 1 :(得分:6)

这是new lambda notation。这个语法是在ruby 1.9中引入的,用于定义未命名的函数。

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

答案 2 :(得分:5)

在Ruby 1.9中引入了->运算符作为旧lambda函数的简写语法。它的行为几乎与lambda函数相同,但允许您指定块外的参数:

lambda {|param| puts param }

# becomes

-> (param) { puts params }