我正在浏览Ruby Koans Ruby Koans,我正处于"about_class_methods.rb"的一个地方,那里有关于设置类方法的讨论,Koans谈论三种方式 .
编写类方法的两种主要方法是:
1:
class Demo (define/open class)
def self.method
end
2:
class << self
def class_methods
end
end
koans还谈到第三种方法,我从未见过(我记得):
def Demo.class_method_third_way
end
Q1第三种方式对我来说实际上比任何其他方式更清晰 . 有什么理由我不明白为什么没有人使用它?
Q2为什么我认为2的语法应该是“self << def name end”?那就是“为什么语法是这样的呢?” Object类是否包含对所有类的引用,这是否适用于自我类的方法?
一如既往,感谢您的帮助和耐心!
2 回答
在(早期)开发类中,随着洞察力的增长而重命名(不是
Person
,而是Employee
,而不是Job
,而是一个或多个Roles
等) . 如果类名在类本身中是硬编码的,则此重命名很容易出错 .在类体中,
self
指的是正在定义的类对象 . 这就是def self.some_method
与def Demo.some_method
相同的原因 .class << some_obj
是访问some_obj
的单例类的语法 . 请参阅Ruby doc: