我刚刚在Rails应用程序中遇到以下代码行:
scope :for_uid, ->(external_id) { where(external_id: external_id) }
->
运算符是什么意思?这对谷歌来说很难。
答案 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 }