4

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メソッドが呼び出されることを期待しています。なぜこのように振る舞うのですか?

4

1 に答える 1

0

リテラルハッシュは呼び出すinitializeメソッドを呼び出さないためHash.newです。

Hash['a', 'b']またはと同じHash['a' => 'b']

于 2013-03-20T04:56:47.670 に答える