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 << self
块中定义方法(如linked question 中所述),那么这两种方法之间存在细微差别,但实际上您是在“打开”当前类来定义类级别的方法。
【讨论】:
【参考方案2】:它与 self.url 方法没有区别。它基本上是一个容器,允许您放置多个方法而无需放置 self.在方法名称前面。在示例中可能没有用,但对于其他类可能非常干净。
IMO 这是开发者的偏好
【讨论】:
以上是关于ruby中的类<< self是啥[重复]的主要内容,如果未能解决你的问题,请参考以下文章