1

Ruby 程序员通常class << self在类体内使用使用来打开类对象的特征类,如下所示:

class Foo
  class << self
    # ...
  end
end

但是,我很少看到这种等效形式(假设Foo已经定义为一个类):

class << Foo
  # ...
end

是否有理由更喜欢第一种风格而不是第二种风格?

4

1 回答 1

3

使用class << Foo时,或明确定义时,def Foo.some_method(args)您正在重复类的名称。

使用class << self是 DRYer,并且使重构更容易(更改类名在一个地方完成,并且不必在代码中重复),以及复制+粘贴到其他类/项目。

class Foo1
  # ..
end

class << Foo # <- :(
  #..
end
于 2014-07-16T19:05:43.520 回答