我正在讀關於符號的一些例子,紅寶石,和一個例子是用符號來代表一個國家的名稱,例如:Montana
紅寶石成語的分組符號
但是,從Java的到來,我通常會在這裏使用枚舉。我喜歡枚舉的是,你可以將它們,所以我可以這樣做:
枚舉國{ 蒙大拿州,明尼蘇達州,... }
然後在Java代碼中我可以調用
States.Montana
有沒有一種合乎邏輯的方法來在ruby中對相關符號進行分組?創建一個包含符號的模塊是否有意義?還是有更習慣的方式來做到這一點在紅寶石?
我正在讀關於符號的一些例子,紅寶石,和一個例子是用符號來代表一個國家的名稱,例如:Montana
紅寶石成語的分組符號
但是,從Java的到來,我通常會在這裏使用枚舉。我喜歡枚舉的是,你可以將它們,所以我可以這樣做:
枚舉國{ 蒙大拿州,明尼蘇達州,... }
然後在Java代碼中我可以調用
States.Montana
有沒有一種合乎邏輯的方法來在ruby中對相關符號進行分組?創建一個包含符號的模塊是否有意義?還是有更習慣的方式來做到這一點在紅寶石?
你可能會想爲此使用模塊。
module States
MN = "Minnesota"
WI = "Wisconsin"
end
puts States::MN #=> "Minnesota"
論紅寶石一個方面說明,「符號」通常是指其中Symbol class是有點像一個實習字符串。你寫了一個像:my_symbol
這樣的符號。它們通常用作HashMap
s *中的鍵。
*應該是Hash
而不是HashMap
。
這樣做的慣用方法是使用原始符號。只需傳遞名稱的符號,使用downcase
就可以實現一些靈活性(可選),並根據有效符號列表驗證符號(可選)。
我最好使用符號或字符串數組:
states = [:Montana, :Minnesota, ...]
states.each { |s| puts s } # print one state each line
puts *states # another way to do the same
對於例子值得說puts
轉換參數(一個或多個)轉換成字符串(一個或多個);所以你可以安全地使用它的符號。如果你不打算展示或操縱它們,我認爲這些符號更有用;否則你可能想使用字符串。
,其中的符號是有用的一個例子是用於索引一個Hash
:
states = { :montana => 'beautiful', :minnesota => 'wonderful', ... }
puts states[:washington]
你讓你的語言混了?我想你的意思是說「他們經常被用作'哈希'中的鍵。 –
我確實做到了!謝謝! – nickgroenke
感謝您的解釋! –