我的以下想法正确吗?非常感谢建议/反馈!
通过方法名前是否指定了关键字self
,我们可以判断哪个方法是实例方法,哪个方法是类方法。
因此,该方法,例如: def self.foo_bar
被定义为类方法。
另一方面,def foo_bar
被定义为实例方法。
最佳答案
不,你不能那样做。考虑一下:
class C
class << self
def m
puts 'pancakes!'
end
end
def i
puts 'eggs'
end
end
这为您提供了 C
上的类方法 m
,并且该方法的声明中没有“self”。但是,您可以向类(class)询问其方法:
C.methods.include? :m
# true
C.methods.include? :i
# false
C.instance_methods.include? :i
# true
考虑到 Ruby 类的可变性,询问类是确定的唯一方法。
关于ruby - 所有类方法都是用 "def self.foo"定义的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8046333/