例如:
class A
def A::f
end
end
什么是A :: f? 我想它既不是类方法也不是实例方法......
答案 0 :(得分:3)
使用双冒号创建一个类方法。你可以通过一个简单的测试来看到这个:
class A
def A::f
puts "Called A::f"
end
end
puts "A.public_methods:"
puts A.public_methods(false)
puts
a = A.new
puts "a.public_methods:"
puts a.public_methods(false)
puts
puts "Attempt to call f"
A.f
a.f
输出:
A.public_methods:
f
allocate
new
superclass
a.public_methods:
Attempt to call f
Called A::f
NoMethodError: undefined method ‘f’ for #<A:0x0000010084f020>
答案 1 :(得分:1)