首页 > 解决方案 > 关于类和方法继承的问题

问题描述

我有以下代码,我试图理解为什么我不能得到 [: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
=> []

标签: rubyclass

解决方案


你得到一个空数组,因为你Foo.public_instance_methods调用并且没有任何公共实例方法(只有)。public_instance_methodsFooFooBar

如果您将该行更改为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]

推荐阅读