到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