2012-02-01 18 views
6

I superAnotherObject olarak adlandırılan bublok ve nesneleri

class SomeObject 
    def initialize &block 
    # do something 
    end 
end 

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

gibi bir nesne, blok SomeObject geçirilen görünmektedir sahiptir. Bu doğru davranış mı ve etrafta mı? bu super açık argümanlar geçmesi bile doğru davranıştır rubyspec göre

+0

Bu davranışa ihtiyacınız yok mu? –

+0

Benim durumumda, hayır yok. – NebulaFox

cevap

8

(yani super('foo'))

Eğer bu bloğu geçmek istemiyorsanız, sadece hiçbir şey yapmaz bir blok geçebileceği, Bu tamamen aynı şey olmasa da,

super(&nil) 

super hiçbir blok geçmek için bir yol olduğu açıkça görülmektedir

(örn yöntem block_given? dayalı davranışını değiştirirse) Bunu ruby ​​spec'ta bulamadım.