我正在看Ruby代碼庫中的這段代碼。self.class.delete是否調用類方法?
我是在假設self.class.delete
調用類方法當前對象上調用delete
糾正 - 即由self
引用的對象。
def delete!
self.class.delete(self.key)
end
我正在看Ruby代碼庫中的這段代碼。self.class.delete是否調用類方法?
我是在假設self.class.delete
調用類方法當前對象上調用delete
糾正 - 即由self
引用的對象。
def delete!
self.class.delete(self.key)
end
它調用類自我類方法delete
。
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的'類方法'實際上是類實例方法的事實。
是的,這是一種類方法。至於它是否在當前對象上調用它,取決於你如何使用術語。它使用參數self.key
調用當前對象類的方法delete
。
所以self.class.delete是一樣的Example.delete。謝謝。 – franz 2009-06-10 04:00:23