Ruby的數組(arrays)和散列表(hashes)是被索引的收集(indexed collections).
兩者都存儲對象的集合,通過鍵(key)來訪問。數組的鍵是整數。而散列表支持以任何對象作為它的鍵。數組和散列表會按需調整大小來保存新的元素。訪問數組元素是高效的,但是散列表提供了靈活性。任何具體的數組或散列表可以保存不同類型的對象。
使用數組字面量(array literal)--即方括號之間放一組元素--可以創建和初始化新的數組對象。有了數組對象,在方括號之間提供索引便可以訪問單個元素,如下例所示,注意Ruby數組的索引從零開始。
a=[1,'cat',3.14] #有三個元素的數組
#訪問第一個元素
a[0] -> 1
#設置第三個元素
a[2] = nil
#顯示這個數組
a ->[1,'cat',nil]
你可能已注意到在這個例子中使用了nil這個特別的值。許多語言中nil(或null)的概念是指“沒有對象”。在Ruby中,這是不一樣的;nil是一個對象,與別的對象一樣,只不過它用來表示沒有任何東西的對象。
有時候創建一組單詞的數組是一件痛苦的事情--要處理許多引號和逗號。幸運的是,Ruby有一種快捷方式:%w 能夠完成我們想做的事情。
a = ['ant','bee','cat','dog','elk']
a[0] -> "ant"
a[3] -> "dog"
#this is the same:
a = %w{ant bee cat dog elk}
a[0] -> "ant"
a[3] -> "dog"
Ruby的散列表與數組相似。散列表字面量(hash literal)使用花括號而不是方括號。這個字面量必須為每一項提供兩個對象:一個鍵(key)和一個值(value)。
例如,你可能想將樂器映射到它們所屬的交響樂章節,可以用散列表這么來做:
inst_section = {
'cello' => 'string',
'clarinet' => 'woodwind',
'drum' => 'percussion',
'oboe' => 'woodwind',
'trumpet' => 'brass',
'violin' => 'string'
}
=>的左邊是鍵(key),右邊是其對應的值(value)。在一個散列表里面,鍵必須是唯一的(不能有兩個“drum”項)。散列表里面的鍵和值可以是任意對象--你可能會有這樣的散列表,它的值是數組或別的散列表等。
散列表使用與數組相同的方括號表示法來進行索引。
inst_section['oboe'] -> "woodwind"
inst_section['cello'] -> "string"
inst_section['bassoon'] -> nil
正如上例所示,默認情況下,如果用一個散列表沒有包含的鍵進行索引,散列表就返回nil。通常這樣是很方便的,比如在條件表達式中nil就意味著false。而有時候你可能想改變這個默認動作。比如使用散列表來計算每個鍵出現的次數時,如果這個默認值是0的話就會很方便。這很容易做到:當創建一個新的空散列表時,可以指定一個默認值。
histogram = Hash.new(0)
histogram['key1'] ->0
histogram['key1'] = histogram['key1']+1
histogram['key1'] ->1
您可能感興趣的文章:- Ruby的字符串與數組求最大值的相關問題討論
- Ruby中數組的一些相關使用方法
- 簡單介紹Ruby on Rails對PostgreSQL數組類型的支持
- Ruby數組(Array)學習筆記
- Ruby教程之注釋、變量聲明以及數組操作
- Ruby創建數組方法總結