到Ruby世界不可不認識:範圍
表示方法 “..” “…”
範圍顧名思義就是表示一段區間的表示法,在 ruby 可以用 “..” 或 “…” 的方式來表示
如 1-10 我們可以用 1..10,但記得要依序印出來不可以直接就用 p 直接印出 1..10,這樣可是會只有印出”1..10”,需要先轉成陣列,所以可以搭配 to_a 方法將範圍表示的東西轉成陣列。
如果不想用 to_a 轉成陣列,還有特別的 * 可以把範圍展開,配合陣列的[ ]放在內部,也有相同的效果
注意 .. 和 … 表示的範圍不同喔,..表示頭尾都包含,…不包含尾巴
小小口訣:多一點少一點,少一點多一點
| 1 | # 少一點多一點 (包含頭尾) | 
哪些東西可以使用?
數值可以用感覺不稀奇,最令我覺得神奇的是英文字母 ruby 也可以透過範圍來表示呢!
| 1 | (1..10) # 範圍 1 ~ 10 | 
搭配陣列的一些方法讓我們更好做事
還記得之前提過的 map, select, reduce 之類的方法嗎? 這些都可以搭配範圍將程式碼很精簡的表示喔!
| 1 | # map 對範圍內每個數值做x+1處理後回傳陣列 | 
甚至可以用來取出陣列中的值喔,注意數字所代表的是陣列的索引喔。
| 1 | pokemon = ["皮卡丘","傑尼龜","妙蛙種子","小火龍"] | 
小小挑戰:請計算從 1 加到 100 的總和
如果大家記得之前我們提過可以使用 reduce 的方法處理陣列的加總,你應該知道這樣的問題要怎麼回答吧。
| 1 | sum = (1..100).to_a.reduce{|sum, x| sum + x} | 
了解了範圍用法之後,我們可以實際應用在很多陣列的地方喔,好好的善用 Ruby 賜與我們的神奇魔法吧!!
參考資料:
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Sean's Blog!
 評論
GiscusDisqus
