Ruby: インスタンスからクラスメソッドを呼び出す 質問する

Ruby: インスタンスからクラスメソッドを呼び出す 質問する

Rubyでは、クラスのインスタンスからクラスメソッドを呼び出すにはどうすればよいでしょうか。

class Truck
  def self.default_make
    # Class method.
    "mac"
  end

  def initialize
    # Instance method.
    Truck.default_make  # gets the default via the class's method.
    # But: I wish to avoid mentioning Truck. Seems I'm repeating myself.
  end
end

行はTruck.default_makeデフォルトを取得します。しかし、 を言及せずにこれを言う方法はあるでしょうかTruck? あるべきであるように思えます。

ベストアンサー1

クラスのリテラル名を参照するのではなく、インスタンス メソッド内で を呼び出すだけですself.class.whatever

class Foo
    def self.some_class_method
        puts self
    end

    def some_instance_method
        self.class.some_class_method
    end
end

print "Class method: "
Foo.some_class_method

print "Instance method: "
Foo.new.some_instance_method

出力:

クラスメソッド: Foo
インスタンスメソッド: Foo

おすすめ記事