
陣列 Array
何謂陣列?
陣列[]:是一組相同型態的連續變數,它們使用同一個變數名稱,而另外用一個索引值來指定使用第幾個變數。在方括號[]裡放進同類型的元素,而在Ruby世界的陣列能夠容納各種型別的物件。
如何建立陣列?
new 一個陣列的類別
1
x = Array.new
直接指向方括號,為常用的寫法,並使用逗號區別元素。
1
2
3y = []
Array = [1,2,3,4,5,"aa"]使用
%w,會建立字串的陣列1
2
3
4Array = %w(aa bb nn)
p Array
-> # 印出 ["aa", "bb", "nn"]
索引號碼 (index number)
使用索引號碼可以指向陣列的任何部分,位置從0開始計算,使用方法如下。
1  | food = ['豆腐', '素漢堡', '素pizza', '素手捲', '素糕', '薯條']  | 
Ruby內建關於陣列的方法
有了陣列之後,我們可以利用陣列做邏輯運算,而Ruby內建也建立許多快速好用的方法,方便使用者。而要獲得這些方法,則是需要好好閱讀文件,熟悉用法,以協助更熟練使用Ruby語言唷!(Ruby Array 手冊)
以下介紹會介紹幾個常用的方法。
map方法
*定義
對Array裡的每個元素「進行計算」,並收集成一個新的Array。
同義詞:collect
1  | Array = [1,2,3,4,5]  | 
select方法
*定義
從集合裡「篩選符合條件」的元素,並收集成一個新的集合。
同義詞:filter
反義詞:reject
以下使用到的(1..10)為範圍,展開後為[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]。
1  | # 將條件寫在{}裡,以下範例為:篩選小於5的數字。  | 
reduce方法
定義
對集合裡的每個元素「進行運算」,並將所有的運算結果歸納成一個「單一結果」。
同義詞:inject
1  | # sum為總和的意思,以下案例為:1+2+3...+10的數學運算  | 
若沒有這個方法的話則需要自己寫一個迴圈,寫Ruby是不是方便很多呢!
範圍 Range
何謂範圍?
為Ruby的特點,很多程式語言沒有這樣的設計。使用()和.來縮寫想要表達一串的元素。直接看範例會比較清楚。
- 使用兩個
..,較常使用。puts (1..10).to_a -> # 印出 1~10 
1  | (1..10)  | 
使用三個
...,建議不要使用,避免混淆。puts (1...10).to_a -> # 印出 1~9也可以結合迴圈、條件式……等使用。
1
2
3for i in 1..10
puts i
end
或是以下case...when
1  | age = 10  | 
回家作業
請參考Ruby Array 手冊來完成以下題目。
1  | 1. 把陣列[7, 8, 9]塞入三組同樣的數字,如[7, 8, 9, 7, 8, 9, 7, 8, 9, 7, 8, 9]。  | 
參考解答
1  | 1. [7, 8, 9] * 4 -> [7, 8, 9, 7, 8, 9, 7, 8, 9, 7, 8, 9]  | 
參考資料
- 為你自己學 Ruby on Rails數字、字串、陣列、範圍、雜湊、符號
 
本文於 2020-09-13 發表在舊網站。

