Правила ключевого слова super
в Ruby таковы, что если оно вызывается без аргументов, все исходные аргументы пересылаются.Если он вызывается с явными аргументами, явные аргументы передаются исключительно.
В этом примере аргументы никогда не должны переадресовываться, поскольку я звоню super
с точными аргументами.
Пример:
@doc = Nokogiri::HTML::DocumentFragment.parse("<body></body>")
class Cat < Nokogiri::XML::Node
def initialize(arg1, arg2)
super("cat", arg2) # Pass arg2 to super
# Do something with arg1 later
end
end
При вызове: Cat.new("dog", @doc)
Я ожидаю получить тег <cat></cat>
и ожидаю, что первый аргумент будет проигнорирован.Вместо этого я получаю тег <dog></dog>
.
Есть ли причина, по которой этот случай не поддается ожидаемому поведению?