寫在開頭
因為一些原因最近開始我的學習Ruby之旅,起初還是有點小興奮的,畢竟我們都是愛學習的娃(臉紅)。
關于Ruby,這里簡單介紹一下。
首先Ruby是一種腳本語言,就像我們平時用的shell一樣,此外它還是一種純粹的面向對象編程語言,在接觸了ruby之后,我覺得在語義化方面ruby做的很好,語法表達什么的都很接近平時說的語言。
語法上,因為編程語言大多是相通的,也沒有那么難理解,值得說的是我覺得在學習一門語言的時候不用花很多時間去記它的語法,只是背過不會用還是徒勞,我的方法是先大致了解一下它的語法,過程中看一看它的demo,可以的話自己寫一寫,想不起來的時候網上查一查就知道了,所謂用得多了,自然就會了。
當然,首先你需要配置環境。
FizzBuzz的練習
題目:
用Ruby實現一個程序,輸出從一到指定范圍的數字,當遇到3的倍數時就輸出"Fizz",當遇到5的倍數時就輸出''Buzz'',當遇到既是3的倍數又是5的倍數時就輸出''FizzBuzz'';
例如:如果范圍是1~15,那么輸出如下:
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
當我拿到這個題的時候,大致分了以下幾步去完成:
1. 新建一個ruby文件,輸出''hello'';
2. 寫一個循環,輸出對應數字;
3. 在循環中加上判斷條件,輸出對應的字符串或數字;
4. 這段程序抽了一個方法,并將循環次數作為參數傳給該方法;
這樣一分的話每一步都很容易,也不容易出錯,主要的點有標準輸出函數,循環,條件判斷,方法,語法上不知道的就去查。
看起來很容易,但是在我寫的時候因為一點疏漏找了好久才找到錯誤,因為最初寫的時候并不是按照上面的順序寫的,結果在寫if條件的時候忘了加end,結果一直運行出錯,才不得不回頭一步步開始,然后很快就完成了。
so,一定要一步步慢慢做才更高效。
以下是我的實現,歡迎交流學習哈:
1. 沒有單元測試的版本
2. 有單元測試的版本
這里大致說一下有單元測試的版本,跟其他語言的測試一樣,有方法名,斷言。
在Ruby的單元測試中,需要定義一個類繼承于Test::Unit::TestCase,這里的''::''表示命名空間,可以理解為路徑,例如''/etc/user''。
代碼第一行是引入''test/unit'',因為后面要繼承它,第二行是引入實現的文件,因為我將實現封裝了一個類,所以需要生成一個實例,即調用類的new方法,這是每個類默認有的,然后定義了一個方法,方法體內有兩個斷言,表示兩個測試用例,ruby中的斷言有多種寫法,如下:
1. assert 2 == 2
2. assert_equal 2, 2
3. assert_equal 2, 1+1
左邊的是期望的結果,右邊的是實際的結果。
安利時間
給大家推薦一個學習Ruby的''游戲'',它是一個類似于闖關游戲的東西,會帶著你在闖關的過程中學到很多,關于Ruby基礎足夠了,戳這里安裝哦
(用法見readme.md)