【问题标题】:What is the class << self in ruby [duplicate]ruby中的类<< self是什么[重复]
【发布时间】:2012-03-12 22:36:15
【问题描述】:

可能重复:
Why isn't the eigenclass equivalent to self.class, when it looks so similar?
class << self idiom in Ruby

我有这门课:

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:这看起来像复制品吗?它们相似且相关,但完全不重复。

标签: ruby


【解决方案1】:

最终结果基本上和定义的一样

def self.load_track_lists
  #do somthing 
end

如果您所做的不仅仅是在class &lt;&lt; self 块中定义方法(如linked question 中所述),那么这两种方法之间存在细微差别,但实际上您是在“打开”当前类来定义类级别的方法。

【讨论】:

    【解决方案2】:

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

    IMO 这是开发者的偏好

    【讨论】:

      猜你喜欢
      • 2019-12-06
      • 1970-01-01
      • 1970-01-01
      • 2011-10-15
      • 1970-01-01
      • 2013-04-18
      • 1970-01-01
      • 2013-12-02
      • 2020-03-07
      相关资源
      最近更新 更多