ruby - 关于类和方法继承的问题
问题描述
我有以下代码,我试图理解为什么我不能得到 [: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
=> []
解决方案
你得到一个空数组,因为你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]
推荐阅读
- r - 专门删除一些重复的列
- machine-learning - 自我错误中的索引超出范围 - PyTorch
- reactjs - MUI 日期选择器:禁用一个月内的特定日期列表
- azure - 预览 Azure 分析
- bash - 在 azuredevops 中引用秘密变量时,Curl 请求不起作用
- plaid - 作为银行账户持有人,我可以使我之前提供的所有格子身份验证无效吗?
- flutter - 我想在颤动中实现这种圆形边框设计
- python - 有没有更快更简单的方法来随机化这些问题的顺序?
- sql - POSTGRES 从 3 个表中检索数据
- python - Pandas 的这两种用法之间是否存在有意义的区别?