ruby中的类<< self是啥[重复]

Posted

技术标签:

【中文标题】ruby中的类<< self是啥[重复]【英文标题】: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:这看起来像复制品吗?它们相似且相关,但完全不重复。 【参考方案1】:

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

def self.load_track_lists
  #do somthing 
end

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

【讨论】:

【参考方案2】:

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

IMO 这是开发者的偏好

【讨论】:

以上是关于ruby中的类<< self是啥[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Ruby类问题[重复]

ruby 中的 class << self 及其方法

以冒号为前缀的单词在 Ruby 中的作用是啥? [复制]

||= 在 Ruby 语言中是啥意思? [复制]

在 ruby​​ 循环的结束标记中添加连字符是啥意思 <% -%>

Ruby:class << self 做啥? [复制]