Ruby程序员通常使用class << self
inside a class body来打开类对象的本征类,如下所示:
class Foo
class << self
# ...
end
end
但是,我很少看到这种等效形式(假设Foo
已被定义为一个类):
class << Foo
# ...
end
是否有理由将第一种风格改为第二种风格?
答案 0 :(得分:3)
使用class << Foo
时,或明确定义def Foo.some_method(args)
时,您正在重复该类的名称。
使用class << self
是DRYer,使重构更容易(更改类名在一个地方完成,不必在代码中重复),以及复制+粘贴到其他类/项目
class Foo1
# ..
end
class << Foo # <- :(
#..
end