2012-02-01 49 views
6

我有這樣塊和對象

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

你不需要這種行爲嗎? – 2012-02-01 17:51:54

+0

就我而言,不,我不知道。 – NebulaFox 2012-02-01 18:11:53

回答

8

根據rubyspec這是正確的行爲,即使你傳遞明確的參數超(即super('foo')

如果你不想傳遞塊,你可以只通過一個什麼也不做塊,雖然這是不太一樣的東西(例如,如果該方法改變基於block_given?其行爲)

看來,

super(&nil) 

是一種在所有沒有傳遞塊超,雖然我無法在ruby spec中找到它。