2011-08-30 24 views
1

我on Rails的v3.0.9使用Ruby和我想知道(不好)如果我說出一個恆定值,因爲這可能發生:如果使用'|| ='表示一個常量值,會發生什麼(壞)?

MAX_LENGTH ||= 30 

BTW:我正在開發一個「acts_as_something」插件(在我的應用程序中不止一個類是「acts_as_something」),並且爲了不在/.../log/apache2/error.log(生產模式)中顯示\生成「警告消息」,如下所示:必須爲狀態常量值,如上所示:

warning: already initialized constant MAX_LENGTH 
+1

btw,它拼寫爲「長度」。 – theIV

+0

@theIV - 我糾正了這個詞。 – Backo

+0

很酷。我不想糾正它,因爲那時我以爲你可能永遠不會注意到/不在你的源中糾正它:) – theIV

回答

5

一般而言,警告永遠不會。您可能想要將其切換爲:

unless (const_defined?(:MAX_LENGTH)) 
    MAX_LENGTH = 30 
end 
+0

與說明'MAX_LENGTH || = 30'相同嗎? – Backo

+2

它更好,因爲它不會通過正確檢查常量是否先定義而發出警告。如果你可以避免使用常量,你可能想要這樣做。例如,返回一個常量值的方法:'def max_length; 30;結束' – tadman

+1

對不起,我的「堅持」,但我想更好地理解使用'|| ='而不是'除非'聲明之間的區別... – Backo

相關問題