2013-01-17 92 views
-4

我有下面的代碼
一個文件,我想初始化方法先運行,然後調用紅寶石:打電話給別人之前初始化方法

class Lol < Redstone 

    def initialize 
     super 2013 
    end 

    call "/" do |headers| 
     "headers" 
    end 

end 

但是,當我執行此,方法調用首先被稱爲。 如何解決這個問題?

+0

請解釋你想要達到的效果 – Yossi

+0

在'initialize'方法內調用'call'。在創建任何實例之前,在聲明類時調用它。 (至少,我認爲你就是這樣做的。) – iamnotmaynard

+0

「我想要初始化方法先運行然後調用方法」 –

回答

1

initialize是這個類中的一個實例方法,所以def initialize只是爲這個類設置構造函數。 call..在分析類定義時調用類的call方法。此代碼相當於

class Lol < Redstone 
    def initialize 
    super 2013 
    end 
end 

Lol.call "/" do |headers| 
    "headers" 
end 

(假設調用是一個公共類的方法)

紅寶石並沒有真正有一個類的構造函數的思想,比實際的類定義的代碼之外(如call方法)。如果您需要做的事情,你可以這樣做:

class Lol < Redstone 
    def self.init 
    #do class setup 
    end 
    init 
    def initialize 
    super 2013 
    end 

    call "/" do |headers| 
    "headers" 
    end 
end 

但是,取決於你想要這個在上班的路上,你想要什麼,可能做不到。