閑云無(wú)衣
          無(wú)衣的筆記
          Ruby的數(shù)組和hash都是帶索引的集合。它們都可以容納一組對(duì)象,并允許以索引鍵來(lái)訪問(wèn)這些對(duì)象。對(duì)數(shù)組而言,索引鍵是一個(gè)整數(shù);而hash則允許用任何對(duì)象作為索引鍵。數(shù)組和hash都能夠自動(dòng)增長(zhǎng)以容納新的元素。數(shù)組和hash都可以容納不同類(lèi)型的對(duì)象。

          數(shù)組:

          方括號(hào)里列出元素并用逗號(hào)將它們相互隔開(kāi)來(lái)創(chuàng)建一個(gè)數(shù)組.?Ruby的數(shù)組可以適應(yīng)不同的對(duì)象類(lèi)型
          ruby>?ary?=?[1,?2,?"3"]
          ???[1,?2,?"3"]

          在Ruby中數(shù)組中的元素可以是nil(null)。nil在Ruby中是一個(gè)對(duì)象與其它對(duì)象一樣,不過(guò)它恰好代表“什么都沒(méi)有”。

          就像前面提到的字符串一樣.數(shù)組也可以相乘或相加
          ruby>?ary?+?["foo",?"bar"]
          ???[1,?2,?"3",?"foo",?"bar"]
          ruby>?ary?*?2
          ???[1,?2,?"3",?1,?2,?"3"]

          我們可用索引來(lái)訪問(wèn)數(shù)組的任意一部分.
          ruby>?ary[0]
          ???1
          ruby>?ary[0,2]
          ???[1,?2]
          ruby>?ary[0..1]
          ???[1,?2]
          ruby>?ary[-2]
          ???2
          ruby>?ary[-2,2]
          ???[2,?"3"]
          ruby>?ary[-2..-1]
          ???[2,?"3"]
          (負(fù)數(shù)索引表示到數(shù)組末尾的偏移,而不是從開(kāi)頭算起.)

          數(shù)組可以和字符串互相轉(zhuǎn)化,分別使用join和split:
          ruby>?str?=?ary.join(":")
          ???"1:2:3"
          ruby>?str.split(":")
          ???["1",?"2",?"3"]

          數(shù)組的一個(gè)常用的方法是<<,該方法會(huì)把一個(gè)值附加到數(shù)組的尾端。
          ages = []
          for person in @people
          ??? ages << person.age
          end

          Ruby提供一個(gè)快捷創(chuàng)建由單詞組成的數(shù)組:
          a=['ant','bee','cat']
          #this is the same:
          a=%w{ant bee cat}

          哈希表

          一個(gè)關(guān)聯(lián)數(shù)組不通過(guò)連續(xù)的數(shù)字索引來(lái)訪問(wèn),而是通過(guò)任何類(lèi)型的主鍵(key)訪問(wèn).這樣的數(shù)組有時(shí)被叫作哈希(hash)或者字典 (dictionary).在Ruby里,我們趨向于用哈希這個(gè)術(shù)語(yǔ).將一對(duì)對(duì)的元素用逗號(hào)分隔開(kāi),并用大括號(hào)({})括起來(lái),這樣就組成了一個(gè)哈希表. 你用一個(gè)關(guān)鍵字在哈希表里進(jìn)行搜索,就像你在數(shù)組里用索引來(lái)提取數(shù)據(jù)一樣.

          ruby>?h?=?{1?=>?2,?"2"?=>?"4"}
          ???{1=>2,?"2"=>"4"}
          ruby>?h[1]
          ???2
          ruby>?h["2"]
          ???"4"
          ruby>?h[5]
          ???nil
          ruby>?h[5]?=?10?????#?appending?value
          ???10
          ruby>?h
          ???{5=>10,?1=>2,?"2"=>"4"}
          ruby>?h.delete?1???#?deleting?value
          ???2
          ruby>?h[1]
          ???nil
          ruby>?h
          ???{5=>10,?"2"=>"4"}

          =>左邊的是索引鍵,右邊的是與之對(duì)應(yīng)的值。在同一hash中,索引鍵必須唯一。hash中的鍵和值可以是任意對(duì)象,甚至可以在hash中保存數(shù)組或別的hash.

          在訪問(wèn)hash中的元素時(shí),索引也是放在方括號(hào)中。

          方法調(diào)用時(shí),可以傳入hash作為參數(shù)。如果這個(gè)hash正好是調(diào)用的最后一個(gè)參數(shù),Ruby允許省略大括號(hào)。如rails中的redirect_to()方法
          redirect_to :action =>'show', :id=>product.id


          posted on 2007-02-07 11:17 無(wú)衣 閱讀(3479) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): rails
           
          主站蜘蛛池模板: 普定县| 外汇| 花垣县| 丰镇市| 遂川县| 金沙县| 朝阳区| 永登县| 张家港市| 广饶县| 武强县| 慈利县| 昂仁县| 台北市| 临泽县| 青神县| 博野县| 葵青区| 凤翔县| 略阳县| 祁东县| 河北省| 旌德县| 曲水县| 永善县| 华池县| 镇原县| 呼和浩特市| 临潭县| 临沧市| 靖西县| 汤阴县| 当涂县| 灵台县| 莱西市| 南投县| 大田县| 瑞丽市| 乐清市| 米脂县| 成安县|