2013-11-14 53 views
1

灌裝常量我正在做一個「連四」與Ruby應用程序。與方法

我有一個名爲win

class Win 

    def up 
    # 
    end 

    def down 
    # 
    end 

    def diagonal_one 
    # 
    end 

    def diagonal_two 
    # 
    end 

end 

以下類,我想做出一個恆定的,像這樣:

CONDITIONS = [up, down, diagonal_one, diagonal_two] 

,所以我可以很容易地核對Win::CONDITIONS - 但這種做法會引發undefined local variable or method 'up' for Win:Class (NameError)。有沒有辦法把方法放在常量中?如果不是,有什麼更好的方法來做到這一點?

+0

您可以將方法定義爲類方法。但它會嘗試在類加載期間執行這些方法。您可以直接填充該值。如果你能舉一個你的方法實現如何的例子,這將有所幫助 – usha

回答

1

的常用方法是定義符號數組:

CONDITIONS = %i[up down diagonal_one diagonal_two] 

,每當你需要調用對象上的方法,請在對象上調用send(...)

1

,你期望這會工作,但你必須將這些方法作爲Win類方法:

class Win 
    class << self 

    def up 
     # 
    end 

    def down 
     # 
    end 

    def diagonal_one 
     # 
    end 

    def diagonal_two 
     # 
    end 
    end 
end 

你有錯誤,因爲你嘗試使用Win實例方法在Win類的上下文。

0

除了類/實例方面的差異,寫up調用該方法,這可能並非你的本意。

您可以存儲方法的名稱與符號:up,並調用它像

a_win_instance.send :up