Ruby中的數組和散列表的使用詳解_ruby專題

來源:互聯網
上載者:User

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']            ->0histogram['key1'] = histogram['key1']+1histogram['key1']            ->1

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.