1. ホーム
  2. ruby

[解決済み] ルビーです。インスタンスからクラスメソッドを呼び出す

2022-03-24 09:16:30

質問

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 ? あるような気がするのですが。

解決方法は?

クラスのリテラル名を参照するのではなく、インスタンスメソッドの内部で、単に 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