可能重复:
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
实在令人困惑。它是什么?它与前两种方法有什么不同?
答案 0 :(得分:3)
最终结果基本上与定义为
的结果相同def self.load_track_lists
#do somthing
end
如果你不仅仅在class << self
块中定义方法,那么这两种方法之间存在细微差别,如linked question中所述,但实际上你是“开放”了当前类,用于定义类级别方法。
答案 1 :(得分:0)
它与self.url方法没有区别。它基本上是一个容器,允许你放置多个方法,而不必自己。在方法名称前面。可能在示例中没有用,但对于其他类可能非常干净。
IMO这是开发者的偏好