範圍代表由一個或多個連續整數組成的序列。只要用..連接兩個整數,就能建立範圍。
1..5
範圍可以是遞增,也可以是遞減。而且一律包含第一個和最後一個值。
範圍實作了 Enumerable 協定,這表示可以使用Enum模組中的函式來操作範圍。
身為西洋棋愛好者,你應該會想寫一套自己的西洋棋。沒錯,線上或許已經有很多現成的實作,但你的版本會獨一無二!
不過在盡情發揮想像力之前,得先處理基本的部分。我們先從產生棋盤開始吧。
棋盤上的每個方格都由一組字母與數字標示。垂直的方格行稱為直行(英文:files),標示為 A 到 H;水平的方格列稱為橫列(英文:ranks),編號為 1 到 8。
實作rank_range/0函式。它應該回傳從 1 到 8 的整數範圍。
Chessboard.rank_range()
實作file_range/0函式。它應該回傳從大寫字母 A 的碼位到大寫字母 H 的碼位的整數範圍。
Chessboard.file_range()
實作ranks/0函式。它應該回傳從 1 到 8 的整數陣列。不要手動寫出這個陣列,請用rank_range/0函式回傳的範圍來產生。
Chessboard.ranks()
# => [1, 2, 3, 4, 5, 6, 7, 8]
實作files/0函式。它應該回傳從 "A" 到 "H" 的字母(字串)陣列。不要手動寫出這個陣列,請用file_range/0函式回傳的範圍來產生。
Chessboard.files()
# => ["A", "B", "C", "D", "E", "F", "G", "H"]