你通過在方括號里列出元素并用逗號將它們相互隔開來創建一個數組. Ruby的數組可以適應不同的對象類型
ruby> ary = [1, 2, "3"]
[1, 2, "3"]
就像前面提到的字符串一樣.數組也可以相乘或相加
ruby> ary + ["foo", "bar"]
[1, 2, "3", "foo", "bar"]
ruby> ary * 2
[1, 2, "3", 1, 2, "3"]
我們可用索引來訪問數組的任意一部分.
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"]
(負數索引表示到數組末尾的偏移,而不是從開頭算起.)
數組可以和字符串互相轉化,分別使用join和split:
ruby> str = ary.join(":")
"1:2:3"
ruby> str.split(":")
["1", "2", "3"]
哈希表
一個關聯數組不通過連續的數字索引來訪問,而是通過任何類型的主鍵(key)訪問.這樣的數組有時被叫作哈希(hash)或者字典(dictionary).在Ruby里,我們趨向于用哈希這個術語.將一對對的元素用逗號分隔開,并用大括號({})括起來,這樣就組成了一個哈希表.你用一個關鍵字在哈希表里進行搜索,就像你在數組里用索引來提取數據一樣.
代碼如下:
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"}