佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > Ruby中的數(shù)組和散列表的使用詳解

Ruby中的數(shù)組和散列表的使用詳解

熱門(mén)標(biāo)簽:語(yǔ)音系統(tǒng) 企業(yè)做大做強(qiáng) Win7旗艦版 客戶(hù)服務(wù) 百度AI接口 呼叫中心市場(chǎng)需求 電話(huà)運(yùn)營(yíng)中心 硅谷的囚徒呼叫中心

Ruby的數(shù)組(arrays)和散列表(hashes)是被索引的收集(indexed collections).

兩者都存儲(chǔ)對(duì)象的集合,通過(guò)鍵(key)來(lái)訪(fǎng)問(wèn)。數(shù)組的鍵是整數(shù)。而散列表支持以任何對(duì)象作為它的鍵。數(shù)組和散列表會(huì)按需調(diào)整大小來(lái)保存新的元素。訪(fǎng)問(wèn)數(shù)組元素是高效的,但是散列表提供了靈活性。任何具體的數(shù)組或散列表可以保存不同類(lèi)型的對(duì)象。

使用數(shù)組字面量(array literal)--即方括號(hào)之間放一組元素--可以創(chuàng)建和初始化新的數(shù)組對(duì)象。有了數(shù)組對(duì)象,在方括號(hào)之間提供索引便可以訪(fǎng)問(wèn)單個(gè)元素,如下例所示,注意Ruby數(shù)組的索引從零開(kāi)始。

a=[1,'cat',3.14]     #有三個(gè)元素的數(shù)組

#訪(fǎng)問(wèn)第一個(gè)元素

a[0]  -> 1

#設(shè)置第三個(gè)元素

a[2] = nil

#顯示這個(gè)數(shù)組

a ->[1,'cat',nil]

你可能已注意到在這個(gè)例子中使用了nil這個(gè)特別的值。許多語(yǔ)言中nil(或null)的概念是指“沒(méi)有對(duì)象”。在Ruby中,這是不一樣的;nil是一個(gè)對(duì)象,與別的對(duì)象一樣,只不過(guò)它用來(lái)表示沒(méi)有任何東西的對(duì)象。

有時(shí)候創(chuàng)建一組單詞的數(shù)組是一件痛苦的事情--要處理許多引號(hào)和逗號(hào)。幸運(yùn)的是,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的散列表與數(shù)組相似。散列表字面量(hash literal)使用花括號(hào)而不是方括號(hào)。這個(gè)字面量必須為每一項(xiàng)提供兩個(gè)對(duì)象:一個(gè)鍵(key)和一個(gè)值(value)。

例如,你可能想將樂(lè)器映射到它們所屬的交響樂(lè)章節(jié),可以用散列表這么來(lái)做:

inst_section = {

'cello'   => 'string',

'clarinet' => 'woodwind',

'drum'  => 'percussion',

'oboe'   => 'woodwind',

'trumpet' => 'brass',

'violin'   => 'string'

}

=>的左邊是鍵(key),右邊是其對(duì)應(yīng)的值(value)。在一個(gè)散列表里面,鍵必須是唯一的(不能有兩個(gè)“drum”項(xiàng))。散列表里面的鍵和值可以是任意對(duì)象--你可能會(huì)有這樣的散列表,它的值是數(shù)組或別的散列表等。

散列表使用與數(shù)組相同的方括號(hào)表示法來(lái)進(jìn)行索引。

inst_section['oboe']           -> "woodwind"

inst_section['cello']            -> "string"

inst_section['bassoon']         -> nil

正如上例所示,默認(rèn)情況下,如果用一個(gè)散列表沒(méi)有包含的鍵進(jìn)行索引,散列表就返回nil。通常這樣是很方便的,比如在條件表達(dá)式中nil就意味著false。而有時(shí)候你可能想改變這個(gè)默認(rèn)動(dòng)作。比如使用散列表來(lái)計(jì)算每個(gè)鍵出現(xiàn)的次數(shù)時(shí),如果這個(gè)默認(rèn)值是0的話(huà)就會(huì)很方便。這很容易做到:當(dāng)創(chuàng)建一個(gè)新的空散列表時(shí),可以指定一個(gè)默認(rèn)值。

histogram = Hash.new(0)

histogram['key1']            ->0

histogram['key1'] = histogram['key1']+1

histogram['key1']            ->1

您可能感興趣的文章:
  • Ruby的字符串與數(shù)組求最大值的相關(guān)問(wèn)題討論
  • Ruby中數(shù)組的一些相關(guān)使用方法
  • 簡(jiǎn)單介紹Ruby on Rails對(duì)PostgreSQL數(shù)組類(lèi)型的支持
  • Ruby數(shù)組(Array)學(xué)習(xí)筆記
  • Ruby教程之注釋、變量聲明以及數(shù)組操作
  • Ruby創(chuàng)建數(shù)組方法總結(jié)

標(biāo)簽:長(zhǎng)沙 山西 海南 崇左 安康 喀什 濟(jì)南 山西

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Ruby中的數(shù)組和散列表的使用詳解》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話(huà)咨詢(xún)

    • 400-1100-266
    仙桃市| 靖西县| 抚宁县| 乌审旗| 南郑县| 五指山市| 宁乡县| 白城市| 永清县| 祁东县| 沙田区| 万山特区| 广饶县| 油尖旺区| 金沙县| 静宁县| 东乌珠穆沁旗| 建瓯市| 甘孜县| 汾阳市| 广州市| 柳州市| 奉节县| 镇康县| 石首市| 东山县| 开化县| 无为县| 呼和浩特市| 武汉市| 邯郸县| 桂阳县| 沈阳市| 姜堰市| 周至县| 黄梅县| 敦煌市| 西藏| 太仆寺旗| 贵溪市| 新化县|