Блоки и объекты

у меня есть такой объект

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. Правильно ли это поведение и можно ли его обойти?

1 ответов


По данным rubyspec это правильное поведение, даже если вы передаете явные аргументы super (т. е. super('foo'))

Если вы не хотите передавать этот блок, вы можете просто передать блок, который ничего не делает, хотя это не совсем то же самое (например, если метод изменяет свое поведение на основе block_given?)

получается, что

super(&nil)

это способ не передавать блок вообще супер, хотя я не мог найти это в ruby спекуляция.