範圍的寫法有分成兩個方法,主要差別是有包含和不包含:
.. (兩個點) → 是有包含的範圍,例如:1..6 會生成1, 2, 3, … , 6。
… (三個點) → 是沒有包含的範圍,例如:1…6 會生成1, 2, 3 … , 5。
通常我們有了這個範圍,我們會將範圍轉為成陣列,而我們會藉由 to_a 將範圍轉為陣列。
例如: (1..6).to_a 會產生 [1, 2, 3, 4, 5, 6]的一個陣列。
除了藉由to_a 來轉換成陣列,我們也可以藉由*來轉換。
例如:[*1..6]也同樣的會產生 [1, 2, 3, 4, 5, 6]的一個陣列。
(1..100).to_a 會產生 1~100元素的陣列。
('a'..'z').to_a 會產生 a, b, c, … , z 的26個元素的陣列。
('A'..'Z').to_a 會產生 A, B, C, … , Z 的26個元素的陣列。
('A'..'z').to_a 會產生 A, B, C, … , Z, [, \, ], ^, _, `, a, b, c, ... z 元素的陣列。
主要是大寫A~Z加上小寫a~z以及 [ \ ] ^ _ ` 的符號(共26+26+6個字)。
可以藉由:
for i in 1..10
puts i
end
得到分別得到1~10
之前介紹過一些在陣列中使用的方法,例如:map, select…等,
我們其實都可以藉由範圍的方式使用,而且這些方法也可以不用先轉成陣列就可以用。
例如:之前使用陣列時:
arr = [1, 2, 3, 4]
p arr.map{|x| x+5}
我們可以就由範圍改成:
p (1..4).map {|x| x+5}
這樣的話,我們就可以更簡潔達到我們要的效果。
藉由範圍的方法,我們可以將連續的數字或文字達到這樣的效果,使程式碼更簡潔,
也是我們使用上更方法。不斷的學習到一些很有趣的東西,
自己有很多不足,還是得加強,但可以學到新的知識,讓我覺得非常有趣。