我有以下代码,我试图理解为什么我无法获得[:hoge]却得到一个空响应。 谁能帮我理解为什么会这样吗?
class Foo
def self.fuga
pp Foo.public_instance_methods(false)
end
end
class Bar < Foo
fuga
def hoge
p "fuga"
end
end
Bar.fuga
=> []
答案 0 :(得分:2)
您得到一个空数组,因为在Foo.public_instance_methods
上您在public_instance_methods
上调用了Foo
并且Foo
没有任何公共实例方法(只有Bar
有)。
如果将该行更改为self.public_instance_methods
,它将按预期工作。
class Foo
def self.fuga
pp self.public_instance_methods(false)
end
end
class Bar < Foo
fuga
def hoge
p "fuga"
end
end
Bar.fuga
#=> [:hoge]