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