Блоки и объекты - PullRequest
       16

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

6 голосов
/ 01 февраля 2012

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

class SomeObject
  def initialize &block
    # do something
  end
end

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

Когда в AnotherObject вызывается super, кажется, что блок передается в SomeObject. Это правильное поведение и есть ли вокруг него?

1 Ответ

8 голосов
/ 01 февраля 2012

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

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

Похоже, что

super(&nil)

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

...