陣列 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 發表在舊網站。