【问题标题】:`->` operator with scopes [duplicate]具有范围的`->`运算符[重复]
【发布时间】:2015-06-26 03:32:54
【问题描述】:

下面的->运算符是什么?

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

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

【问题讨论】:

  • Google for ruby​​ lambda 运算符
  • 它被称为'lambda literal'或'stabby lambda'。这只是创建 lamda 的一种方式。

标签: ruby lambda literals


【解决方案1】:

它被称为 lambda 字面量,只是创建 lamda 的一种简短方法。以下相同:

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

相当于:

double = lambda {|x| 2 * x }
double.call(10) # => 20

如果您不熟悉 lambda,请查看 ruby​​-doc 了解更多详情 http://ruby-doc.org/core-2.0.0/Proc.html#method-i-lambda-3F

另外,在 StackOverflow 线程 What do you call the -> operator in Ruby? 之后结帐

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-09
    • 1970-01-01
    • 1970-01-01
    • 2016-08-11
    • 1970-01-01
    • 2017-04-10
    • 1970-01-01
    • 2011-01-21
    相关资源
    最近更新 更多