クラスのメソッドとそのクラスの固有クラス (またはメタクラス) のメソッドは、1 つのことを定義する 2 つの方法にすぎませんか?
そうでなければ、違いは何ですか?
class X
# class method
def self.a
"a"
end
# eigenclass method
class << self
def b
"b"
end
end
end
何らかの方法で異なる行動をしますX.a
か?X.b
固有クラスを開くことで、クラス メソッドを上書きまたはエイリアスできることを認識しています。
irb(main):031:0> class X; def self.a; "a"; end; end
=> nil
irb(main):032:0> class X; class << self; alias_method :b, :a; end; end
=> #<Class:X>
irb(main):033:0> X.a
=> "a"
irb(main):034:0> X.b
=> "a"
irb(main):035:0> class X; class << self; def a; "c"; end; end; end
=> nil
irb(main):036:0> X.a
=> "c"