6

我有一个像这样的对象

class SomeObject
  def initialize &block
    # do something
  end
end

class AnotherObject < SomeObject
  def initalize &block
    super
    # do something with block
  end
end

super被调用时AnotherObject,该块似乎被传递给SomeObject. 这是正确的行为吗?它是否存在?

4

1 回答 1

8

根据ruby​​spec,这是正确的行为,即使您将显式参数传递给 super (ie super('foo'))

如果您不想传递该块,则可以只传递一个什么都不做的块,尽管这并不完全相同(例如,如果该方法基于 更改其行为block_given?

看起来

super(&nil)

是一种完全不向 super 传递任何块的方法,尽管我在 ruby​​ 规范中找不到它。

于 2012-02-01T17:59:15.253 回答