Я пытаюсь сделать что-то вроде этого:
module RefinedHash
refine Hash do
def initialize(*args)
super
# something here
end
def [](key)
'whatever'
end
end
end
class Hello
using RefinedHash
def initialize
h = Hash.new
p h[:test]
end
end
Hello.new # => "whatever"
В результате []
работает хорошо и возвращает 'whatever'
для вызовов с любым ключом (только для целей тестирования, чтобы знать, что наше уточнение было эффективно применено). Но, увы, любой код в усовершенствованном методе initialize
вообще не будет выполняться, когда я создаю свой хэш с Hash.new
там. Я что-то упустил или где-то указано, что initialize
не может быть уточнено, как любой другой метод?