代码之家  ›  专栏  ›  技术社区  ›  Madhusudhan

<<Ruby中的运算符

  •  0
  • Madhusudhan  · 技术社区  · 15 年前

    我对鲁比很陌生,

    我在Rails中遇到了以下代码,但我不知道“<<”运算符是如何工作的,也不知道它在下面的代码中做了什么。

    def <<( rate )
      r = Rating.new
      r.rate = rate
      r.rateable = proxy_owner
      ...
      ...
    end
    class << ActiveRecord::Base
      ...
      ...
    end
    

    有人能跟我解释一下吗?

    编辑: 这是密码 https://github.com/azabaj/acts_as_rateable/blob/master/lib/acts_as_rateable.rb

    2 回复  |  直到 13 年前
        1
  •  3
  •   giraff    15 年前

    def <<( rating ) : 在您的示例中,这用于将评级添加到可评级模型中。(例如) acts_as_rateable.rb:41 ,类似于在字符串中附加某些内容( str << "abc" )因为它在一个模块中,所以它将只包括在您声明为应课差饷的模型中。

    class << ClassName :

    此块内的所有方法都将是静态/类方法(请参见 this blog entry )(在这种情况下,所有模型都有方法model.example_static_method。)

        2
  •  2
  •   Platinum Azure    15 年前

    Ruby中几乎所有的操作符实际上都是在它们前面的对象上调用的实例方法。

    有许多不同的用途 << 取决于调用它的对象类型。例如,在数组中,它的作用是将给定的值推送到数组的末尾。

    看起来这是针对Rails模型对象的,所以在这种情况下,我会说这是在将模型对象附加到模型对象集合时调用的辅助方法。例如,在这种情况下,您可能在产品上附加一个评级。

    如果您展示了整个方法定义,并展示了它在哪个类中,我可以提供一个更具体的答案。