2009-06-10 75 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

相关问题