詳細(xì)解讀Ruby哈希表相關(guān)概念
Ruby語(yǔ)言的應(yīng)用范圍還是比較廣泛的,不過(guò)知道這種新型語(yǔ)言的人可能還是不太多。Ruby哈希表使用花括號(hào)而不是中括號(hào)。哈希表需要為每個(gè)項(xiàng)提供兩個(gè)對(duì)象:一個(gè)是鍵,另一個(gè)是它的值。#t#
例如,你想為樂(lè)隊(duì)表示音樂(lè)器材。你可以使用Ruby哈希表來(lái)實(shí)現(xiàn)它。
- inst_section = {
- 'cello' => 'string',
- 'clarinet' => 'woodwind',
- 'drum' => 'percussion',
- 'oboe' => 'woodwind',
- 'trumpet' => 'brass',
- 'violin' => 'string'
- }
在=>左邊的是鍵,在右邊的是它對(duì)應(yīng)的值。鍵在每個(gè)具體的哈希表中是唯一的,你不能有兩個(gè)"drum"項(xiàng)。鍵和值在哈希表中可以是任意的對(duì)象——你可以哈希數(shù)組,甚至其它的哈希表等等。
Ruby哈希表使用和數(shù)組一樣的中括號(hào)索引。
- inst_section['oboe']-> "woodwind"
- inst_section['cello']-> "string"
- inst_section['bassoon']-> nil
就如最后一個(gè)例子中所看到的,如果鍵不存在,Ruby哈希表默認(rèn)是返回nil。通常,這樣做很方便,在使用條件表達(dá)式中,nil的意思是false。有時(shí)候,你想要改變這個(gè)默認(rèn)值。例如,你想計(jì)算哈希表中鍵的訪問(wèn)次數(shù),如果默認(rèn)值是0就比較方便了。當(dāng)你創(chuàng)建一個(gè)新的空的哈希表時(shí)很容易指定一個(gè)默認(rèn)值。
- histogram = Hash.new(0)
- histogram['key1']-> 0
- histogram['key1'] =
histogram['key1'] + 1- histogram['key1']-> 1