語法

一般陣列

Ruby 中使用中括號 ([]) 來建立陣列,括號中為陣列元素,以逗點 (,) 隔開:

1
p [178, 169.99, "30cm", [9527]] # [178, 169.99, "30cm", [9527]]

陣列中的元素也可以是陣列,而成為多維陣列的應用。

字串陣列

Ruby 中另外提供了使用百分比符號 (%) 開頭,加上任意的符號 (非字母數字) 包夾字串陣列元素,以空白隔開,有以下兩種方式:

  1. %w{xx oo},不解析內容
  2. %W{xx oo},解析內容

規則和單引號雙引號類似,所有的元素都會是字串型別,如下範例:

1
2
3
4
var = 5566
p %w{178 169.99 "30cm" [9527] %w{9527} #{var}} # ["178", "169.99", "\"30cm\"", "[9527]", "%w{9527}", "\#{var}"]
p %W{178 169.99 "30cm" [9527] %W{9527} #{var}} # ["178", "169.99", "\"30cm\"", "[9527]", "%W{9527}", "5566"]
p %w[可以 用 各種 包夾 符號] # ["可以", "用", "各種", "包夾", "符號"]

符號陣列

在 Ruby 2.0 之後新增,一樣使用百分比符號 (%) 開頭,加上任意的符號 (非字母數字) 包夾字串陣列元素,以空白隔開,有以下兩種方式:

  1. %i{xx oo},不解析內容
  2. %I{xx oo},解析內容

規則和單引號雙引號類似,所有的元素都會是符號型別,如下範例:

1
2
3
4
var = 5566
p %i{178 169.99 "30cm" [9527] %i{9527} #{var}} # [:"178", :"169.99", :"\"30cm\"", :"[9527]", :"%i{9527}", :"\#{var}"]
p %I{178 169.99 "30cm" [9527] %I{9527} #{var}} # [:"178", :"169.99", :"\"30cm\"", :"[9527]", :"%I{9527}", :"5566"]
p %i[可以 用 各種 包夾 符號] # [:可以, :用, :各種, :包夾, :符號]

陣列存取

我們使用中括號 ([]) 加上索引值來表示陣列中的元素,例如:array[0],以此方式可以取得或修改陣列元素的內容。以下為存取陣列的相關範例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ar = []
ar << 55 # push
ar.push(66)
ar[5] = 178

p ar # [55, 66, nil, nil, nil, 178]

ar = %w{a b c d e f g}

p ar[-1] # "g"
# ar[開始索引, 數目]
p ar[2, 4] # ["c", "d", "e", "f"]
# 使用 range
p ar[2..4] # ["c", "d", "e"]
p ar[2...4] # ["c", "d"]

轉型

陣列可以用以下轉型函式:

  1. to_s
  2. to_h

如下範例:

1
2
3
p [178, 169.99, "30cm", [9527]].to_s # "[178, 169.99, \"30cm\", [9527]]"
p [[:key, :value]].to_h # {:key=>:value}
# p [:key, :value].to_h # error

兩個兩個元素的陣列可以轉成Hash物件

延伸閱讀

上一篇 Ruby 教學 - 符號 (Symbol)