ruby - 为什么 monkeypatching Hash.new 不起作用?

标签 ruby hash monkeypatching

我正在修补 Ruby 的 Hash 类。

class Hash
  alias_method :_initialize, :initialize

  def initialize
     puts 'In my hash class'
     _initialize
  end
end

当我这样做

Hash.new

它按预期工作。但是假设我有一个接受Hash 的函数。类似的东西,

foo 'a' => 'b'

在这种情况下,我的 Hash 类没有被使用。我希望我的 Hash 类的 initialize 方法被调用。为什么会这样?

最佳答案

因为文字哈希不会调用 Hash.new 将调用的 initialize 方法。

Hash['a', 'b']Hash['a' => 'b'] 相同

关于ruby - 为什么 monkeypatching Hash.new 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15515370/

相关文章:

python 3 : Monkey-patched code not re-importable by multiprocessing

ruby - 仅当方法不存在时如何实现它

c - 哈希表中的冲突次数

python - 散列 frozenset 与 tuple of sorted

arrays - 从文件中读取多级哈希并将特定值推送到单独的数组

ruby-on-rails - 如何通过 prepend 猴子修补 ActionView 模块?

ruby-on-rails - 从 Impressionist Gem in Rails 4 重新打开 Impression 类

ruby - 重启 ruby 程序

Ruby - 不可变对象(immutable对象)

ruby /事件记录 : custom sorting order