在ruby中,class << self是什么意思?

4
我是一位有用的助手,可以为您翻译文本。

可能是重复的问题:
为什么eigenclass与self.class不相等,看起来很相似?
在Ruby中class << self习惯用语

我有这个类:

class Player < ActiveRecord::Base
  before_save :set_slug

  def remains
    ((end_date - Date.today) + 1).to_i
  end

  def self.url
    "Our_link_#{slug}"
  end

  class << self
    def load_track_lists
      #do somthing 
    end
  end
end

我理解类和实例方法,但是...
class << self
  def load_track_lists
    #do somthing 
  end
end

这真的很令人困惑。它是什么,它与之前的两种方法有何区别?


@lucapette:这看起来像是重复的吗?它们很相似且相关,但绝不是重复的。 - Platinum Azure
2个回答

3

最终结果基本上与将其定义为相同

def self.load_track_lists
  #do somthing 
end

如果您不仅在class << self块中定义方法,还有微妙的差别,如链接问题所述,但实际上您正在“打开”当前类以在其中定义类级别的方法


1

它与self.url方法没有区别。它基本上是一个容器,允许您放置多个方法而无需在方法名称前面放置self。在示例中可能没有用处,但对于其他类来说可能非常干净。

在我看来,这是开发人员的偏好。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接