2012-02-01 12 views
6

Ho un oggetto come questoblocchi e oggetti

class SomeObject 
    def initialize &block 
    # do something 
    end 
end 

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

Quando super viene chiamato nel AnotherObject, il blocco sembra essere passato a SomeObject. È questo il comportamento giusto ed è lì intorno?

+0

Non hai bisogno di questo comportamento? –

+0

Nel mio caso, no, non lo faccio. – NebulaFox

risposta

8

Secondo rubyspec questo è il comportamento corretto, anche se si passa argomenti espliciti a super (cioè super('foo'))

Se non si vuole passare quel blocco, si può solo passare un blocco che non fa nulla, anche se questo non è proprio la stessa cosa (ad esempio, se il metodo cambia il suo comportamento sulla base di block_given?)

sembra che

super(&nil) 

è un modo per passare alcun blocco a tutti di super, anche se Non ho potuto trovare questo in ruby ​​spec.