2009-06-10 77 views
4

我正在看Ruby代碼庫中的這段代碼。self.class.delete是否調用類方法?

我是在假設self.class.delete調用類方法當前對象上調用delete糾正 - 即由self引用的對象。

def delete! 
    self.class.delete(self.key) 
end 

回答

8

它調用類自我類方法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
+0

所以self.class.delete是一樣的Example.delete。謝謝。 – franz 2009-06-10 04:00:23

1

這是正確的,無視ruby的'類方法'實際上是類實例方法的事實。

0

是的,這是一種類方法。至於它是否在當前對象上調用它,取決於你如何使用術語。它使用參數self.key調用當前對象類的方法delete

相關問題