Правила ключевого слова Ruby's super
состоят в том, что если он вызывается без аргументов, все исходные аргументы пересылаются. Если он вызывается с явными аргументами, то явные аргументы передаются исключительно.Неожиданное поведение от ключевого слова Ruby 'super' - Наследование Nokogiri
В этом примере аргументы никогда не должны пересылаться, так как я вызываю 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>
.
Есть ли причина, по которой этот случай будет игнорировать ожидаемое поведение?
Вы пропустили тег ruby-1.9.3 ;-) – Howard