Rubysuper
关键字的规则是,如果不带参数调用它,则会转发所有原始参数。如果使用显式参数调用它,则显式参数仅传入。
在这个例子中,永远不应该转发参数,因为我是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>
标签。
这种情况是否有理由违背预期的行为?