我正在看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