我有一个像这样的对象
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
。这是正确的行为吗?它是围绕它吗?
答案 0 :(得分:8)
根据rubyspec这是正确的行为,即使你将显式参数传递给super(即super('foo')
)
如果你不想传递那个块,你可以传递一个什么都不做的块,虽然这不是一回事(例如,如果方法根据block_given?
改变其行为)< / p>
似乎
super(&nil)
是一种完全不通过块到超级的方法,虽然我在红宝石规范中找不到这个。