因為一次只傳一個字串或數字太沒有效率,弄個集合包裝把所有資料放到裡面在一次傳過去。
#使用Array類別
a = Array.new
#使用中括號
b = []
#一樣可以建立陣列,但要小心裡面的東西會變成字串
list = %w(ruby php python)
list = ["ruby","php","python","c","java","JavaScript"]
puts list[0] #印出 ruby
puts list[1] #印出 php
puts list[-1] #印出 JavaScript
puts list[-2] #印出 java
#ruby方法
puts list.first #印出 ruby
puts list.last #印出 JavaScript
puts list.length #印出 6 ,代表陣列裡有6個元素
list << "React" #在最後面加一個元素
puts list.length #印出 7
list.push("vue.js") #也可以用此種方式在陣列後方加元素
puts list.length #印出8
map:對集合裡的每個元素進行運算,並收集成一個新的集合。
同意詞:collect
list = [1, 2, 3, 4, 5]
p list.map { | x | x × 2 }
#會把裡面每個元素丟進x裡,再乘於2得到新的集合[2, 4 , 6, 8, 10 ]
p list.collect { | x | x × 2 }
#得出的結果與上面一樣
p(1..10).map { | x | x × 2 }
#(1..10)數字1到10依順序丟進x裡,得出[2, 4, 6 , 8, 10, 12, 14, 16, 18, 20]
select:從集合裡挑選符合條件的元素,並收集成一個新的集合。
同意詞:filter
反意詞:reject
p (1..10).select { | x | x < 5}
#從數字1到10裡挑選出符合小於 5 的數字,得出[1, 2, 3, 4]
p (1..10).reject { | x | x < 5}
#從數字1到10裡挑選出不符合小於 5 的數字,得出[5, 6, 7, 8, 9, 10]
同義詞:inject
p (1..10).reduce { |sum, x| sum + x}
#1到10的數字會依序丟進 x 裡,再由 sum 負責依序將所有 x 值累加起來,得到 55
puts (1..10).to_a #印出 1~10 ,to_a轉成陣列
puts (1...10).to_a #印出 1~9
不只可以用在數字上,也可以用在文字上("a".."z")
與 for 迴圈結合
for i in 1..10
puts i
end
age = 10
case age
when 0..3
puts "嬰兒"
when 4..10
puts "兒童"
when 11..17
puts "青少年"
else
puts "成年"
end