我刚刚完成了Ruby koan 248并且在about_class_methods,rb文件的末尾有这段代码:
class Dog
def self.class_method2
:another_way_to_write_class_methods
end
end
def test_you_can_use_self_instead_of_an_explicit_reference_to_dog
assert_equal :another_way_to_write_class_methods, Dog.class_method2
end
# ------------------------------------------------------------------
class Dog
class << self
def another_class_method
:still_another_way
end
end
end
def test_heres_still_another_way_to_write_class_methods
assert_equal :still_another_way, Dog.another_class_method
end
# THINK ABOUT IT:
#
# The two major ways to write class methods are:
# class Demo
# def self.method
# end
#
# class << self
# def class_methods
# end
# end
# end
#
# Which do you prefer and why?
# Are there times you might prefer one over the other?
我不确定我是否理解为什么在不同的情况下,我可能更喜欢一种语法而不是另一种语法。我可以看到你可以在类中定义一组方法&lt;&lt;自我部分,但这是重点吗?我认为我有一些微妙的缺失,但我不知道那是什么。
有人会介意把它拼写给我吗?
答案 0 :(得分:0)
您可能希望在 class << self
上使用 def self.method
,因为您可能希望向类添加属性 reader 属性。事实上,任何时候您想使用为类定义的语法时,您都可能需要考虑 class << self
。我是 Ruby 的新手,但我想如果您想定义许多类方法,您可以使用 class << self
语法将它们组合在一起。