国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Ruby > 正文

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

2020-10-29 19:38:02
字體:
供稿:網(wǎng)友

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

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

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

a=[1,'cat',3.14]     #有三個元素的數(shù)組#訪問第一個元素a[0]  -> 1#設(shè)置第三個元素a[2] = nil#顯示這個數(shù)組a ->[1,'cat',nil]

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

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

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

inst_section = {'cello'   => 'string','clarinet' => 'woodwind','drum'  => 'percussion','oboe'   => 'woodwind','trumpet' => 'brass','violin'   => 'string'}

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

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

inst_section['oboe']           -> "woodwind"inst_section['cello']            -> "string"inst_section['bassoon']         -> nil

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

histogram = Hash.new(0)histogram['key1']            ->0histogram['key1'] = histogram['key1']+1histogram['key1']            ->1

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 新竹市| 宾阳县| 青河县| 普洱| 堆龙德庆县| 酉阳| 宁明县| 石阡县| 革吉县| 绥阳县| 宁南县| 内黄县| 渑池县| 阜康市| 泗洪县| 游戏| 河间市| 宜城市| 杂多县| 津南区| 扶沟县| 芦溪县| 梧州市| 四平市| 洪洞县| 繁峙县| 巴彦淖尔市| 花垣县| 茶陵县| 平阳县| 元朗区| 岳西县| 合作市| 通榆县| 河南省| 龙山县| 区。| 明水县| 东乌| 三台县| 苍山县|