我刚刚在 Rails 应用程序中遇到了以下代码行:
scope :for_uid, ->(external_id) { where(external_id: external_id) }
运营商是什么->
意思?谷歌有点难。
我刚刚在 Rails 应用程序中遇到了以下代码行:
scope :for_uid, ->(external_id) { where(external_id: external_id) }
运营商是什么->
意思?谷歌有点难。
这是语法糖。
->(external_id) { where(external_id: external_id) }
等于:
lambda { |external_id| where(external_id: external_id) }
这是新的 lambda 表示法。这种语法是在 ruby 1.9 中引入的,用于定义未命名的函数。
在您的示例中,它是由未命名函数定义的范围。
->
运算符是在 Ruby 1.9 中作为旧lambda
函数的简写语法引入的。它的行为与lambda
函数几乎相同,但允许您在块外指定参数:
lambda {|param| puts param }
# becomes
-> (param) { puts params }