Резюме: subclass.reverse_merge (class) возвращает класс - не подкласс
У меня есть небольшой класс, расширяющий Hash
class HtmlOptions < Hash
def add_class
# add html-class like jQuery
…
end
(a little more)
end
Так что, если я использую его таким образом с merge
input_options = HtmlOptions.new(…)
…
input_options.merge(id:"ovewrite_id").add_class("sample")
работает должным образом, а при использовании reverse_merge
input_options = HtmlOptions.new(…)
input_options.reverse_merge(value:"default").add_class("sample")
#crashes
выдается ошибка (add_class undefined).
Хорошо, передача HtmlOptions
обоим, делает трюк как:
input_options.reverse_merge(HtmlOptions.new(value:"default")).add_class("sample")
Так что теперь я думаю, что это ошибка, и исправление ее в моем классе HtmlOptions
в порядке.Потому что я не могу придумать ситуацию, когда это тихое изменение класса предназначено.
С другой стороны, если основная идея reverse_merge - работать так строго reverse , я долженне меняйте его в моем классе (а взрывающая версия reverse_merge неверна)
Может кто-нибудь сказать мне, если я собирался использовать это поведение ?, (и, возможно, подскажите, где его использовать?) Или просто ошибка.