私はこのコードをRubyライブラリで見ています。即ちself
によって参照されるオブジェクト - self.class.deleteはクラスメソッドを呼び出しますか?
私はself.class.delete
が現在のオブジェクトにdelete
と呼ばクラスのメソッドを呼び出すと仮定正しいアム。
def delete!
self.class.delete(self.key)
end
私はこのコードをRubyライブラリで見ています。即ちself
によって参照されるオブジェクト - self.class.deleteはクラスメソッドを呼び出しますか?
私はself.class.delete
が現在のオブジェクトにdelete
と呼ばクラスのメソッドを呼び出すと仮定正しいアム。
def delete!
self.class.delete(self.key)
end
これは、クラスのメソッドdelete
をselfのクラスとして呼び出します。
class Example
def self.delete
puts "Class method. 'self' is a " + self.class.to_s
end
def delete!
puts "Instance method. 'self' is a " + self.class.to_s
self.class.delete
end
end
Example.new.delete!
出力:
Instance method. 'self' is a Example Class method. 'self' is a Class
rubyの 'class methods'が実際にクラスインスタンスメソッドであるという事実を無視して、正しいです。
はい、クラスメソッドです。現在のオブジェクトでそれを呼び出すかどうかは、用語をどのように使用しているかによって異なります。これは、引数self.key
を持つ現在のオブジェクトのクラスのメソッドdelete
を呼び出しています。
のでself.class.deleteはExample.deleteと同じです。ありがとう。 – franz