【发布时间】:2015-11-05 14:38:57
【问题描述】:
这按预期工作:
h = { a: "alpha" }
h.kind_of?(Hash) # => true
但是,当我尝试使用模块扩展核心 Ruby 类时,它似乎不起作用:
module CoreExtensions
module Hash
module Keys
def my_custom_method
self.each do |k, v|
self.kind_of?(Hash) # => false
end
end
end
end
end
Hash.include CoreExtensions::Hash::Keys
h = { a: "alpha" }
h.my_custom_method
请注意,这是演示我的问题的人为代码示例。
在这样的模块中使用object.kind_of?(Class) 有什么不同吗?我的假设是,使用 self 是在以某种方式引用模块,而不是实际的 Hash 类,而是 self.class # => Hash 所以它像 Hash 类一样“嘎嘎”。
【问题讨论】:
标签: ruby module monkeypatching