Ruby的意外行为';超级';关键词-Nokogiri继承

Ruby的意外行为';超级';关键词-Nokogiri继承,ruby,ruby-1.9,ruby-1.9.2,ruby-1.8,ruby-1.9.3,Ruby,Ruby 1.9,Ruby 1.9.2,Ruby 1.8,Ruby 1.9.3,Ruby的super关键字的规则是,如果在没有参数的情况下调用它,则会转发所有原始参数。如果使用显式参数调用它,则显式参数以独占方式传入 在本例中,不应转发参数,因为我正在使用确切的参数调用super 例如: @doc = Nokogiri::HTML::DocumentFragment.parse("<body></body>") class Cat < Nokogiri::XML::Node def initialize(arg1, arg2) s

Ruby的
super
关键字的规则是,如果在没有参数的情况下调用它,则会转发所有原始参数。如果使用显式参数调用它,则显式参数以独占方式传入

在本例中,不应转发参数,因为我正在使用确切的参数调用
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
@doc=Nokogiri::HTML::DocumentFragment.parse(“”)
类Cat
调用时:
Cat.new(“dog”,@doc)
我希望返回一个
标记,并且我希望忽略第一个参数。相反,我得到了一个
标签

这种情况是否会违反预期行为?

如果您查看,设置节点名称的实际上是
new
方法,而不是
initialize
方法。调用
super
没有什么神秘的事情发生,只是initialize方法对这些参数没有任何作用


我假设这是因为
new
方法应该是为对象分配存储等的方法,在nokogiri的例子中,这意味着创建底层libxml节点,该节点包含节点的名称。

您错过了标记ruby-1.9.3;-)谢谢,基于此,似乎不可能通过正常方式覆盖
新的
方法。