陣列的概念就像一排藥盒,每一格都會裝著每天你該吃的藥。
這樣就不會吃錯藥,或是吃過量。
另外,你可以放任何東西在陣列中,數字、字串、布林值...
array = [1, 2, "HI", FALSE, "A"]
以上就是陣列的模樣。
前面字串、數字用的好好的,為什麼要用陣列?
如果像前面一樣,一個一個丟都進變數裡,這樣有點太沒有效率了;但當我們有像陣列一樣的東西,這樣我們要抓資料的話,不就可以整包帶走。
是不是很方便啊!
要怎麼去建立一個新陣列呢?
你可以用以下的方法來建立一個陣列。
p Array.new # => []
p Array.new(2) # => [nil, nil]
p Array.new(5, "A") # =>["A", "A", "A", "A", "A"]
p Array.new(2, Hash.new) # =>[{}, {}]
你也可以使用%w
來建立一個陣列。
像是這樣:
list = %w(Ruby Rails Git)
p list # => ["Ruby", "Rails", "Git"]
:::warning
注意:
當你使用%w
來建立陣列時,他會自動幫你建立一個裡面是字串的陣列。
:::
在陣列中,每個值的位置是以索引值來稱呼的,且是以0開始計算,例如:
list = [1, 2, "HI", FALSE, "World", "name", 3]
puts list[0] # => 1
位置是從0開始計算,知道位置是從0計算之後,就可以任意拿陣列中的值。
而且拿最後一個值,可以不用這麼辛苦一個一個算他是在第幾個,索引值可以直接打-1
,這樣就可以拿到了。
list = [1, 2, "HI", FALSE, "World", "name", 3]
puts list[1] # => 2
puts list[2] # => HI
puts list[-1] # => 3
puts list[-2] # => name
但是在Ruby裡面,有另外一種拿法。
list = [1, 2, "HI", FALSE, "World", "name", 3]
puts list.first # => 1
puts list.last # => 3
這樣使用是不是很像英文,那你是否想問有沒有second這個方法,答案是沒有!
Ruby並沒有提供這個方法。
有一個很多元素的陣列,想知道裡面有多少元素,可以用length
。
list = [1, 2, "HI", FALSE, "World", "name", 3]
puts list.length # => 7
我加東西在這個陣列中後面,這時候length
會是多少呢?
list = [1, 2, "HI", FALSE, "World", "name", 3]
puts list.length # => 7
list << "miik tea" # 在list 陣列中後面加一個元素
puts list.length # => 8
list.push(5) # 在list 陣列中後面加一個元素
puts list.length # => 9
用<<
將你要加的元素放在陣列的最後面,或是用push
,這兩種方式都可以將元素放在陣列最後面。
參考資料: