大家好,我是小K。今天的進度是以下四個習題。
Exercise 13: Parameters, Unpacking, Variables
Exercise 14: Prompting And Passing
Exercise11提到了輸入。在Ruby,要讓使用者輸入,要用下面這個指令:
gets
但是gets這個指令,還去抓取換行字元。所以使用者輸入之後按下Enter,輸出所輸入的字串後會自動幫你換行。像下面這個樣子:
那如果不要讓它換行的話,該怎麼寫呢?只要在gets後面加上chomp。chomp這個物件,主要作用就是將字串前後的換行字元拿掉,這樣在印完之後才不會自動換行。
gets.chomp
括號可以拿掉,以前打Java打習慣了,所以在練習的時候常常會習慣打上括號。(笑)
11.1利用類似的格式,再寫一份。
Exercise12,這章的習題是Exercise11的延伸練習。如果要將使用者所輸入的字串轉變成整數的話,只要在後面加上to_i。
number = gets.chomp.to_i
這樣number的型態就會是整數。所以Exercise12的習題最主要是在練習,將使用者輸入的字串轉為數字,然後做一些簡單的運算。
上面這個是英文版的練習範例。中文版的Exercise12,所講的是有關於require和Libraries的觀念。雖然大概懂得require和函示庫的概念,但是我照著中文版的範例打了一遍,所印出的是https://www.ruby-lang.org/en這個網頁的原始檔。有點不太懂意思所以就先跳過,後面再來研讀。不過我有將程式碼放到Github。
12.1將輸入的字串轉為浮點數,並做運算。(取10%)
Exercise13,這一章的習題主要是講參數和傳遞參數的觀念。在前面先將參數的個數宣告好,用ARGV這個物件。比如要宣告3個參數:
first, second, third = ARGV
然後在執行Ruby程式的時候,輸入3個參數,就會自動依序對應到左邊的變數。下面是Exercise13的範例程式碼:
如果你宣告3個參數,但實際上只輸入2個變數話,最後一個參數就會當成nil。(比如上面第二次執行結果)
NOTE: nil在Ruby表示的是一個空值。
這章的習題比較多,前面兩題是簡單的增加和減少參數的個數,所以我將程式碼傳上來,但在這邊就不在解釋囉~
13.1 減少參數個數
13.2 增加參數個數
NOTE:
在上面兩個範例中,應該還有看到一行
The script is called: #{$0}
這行的意思是印出當前執行的腳本(程式) Ruby會把腳本名稱固定存在$0這個變數裡面。
13.3 將gets.chomp和ARGV合在一起,讓使用者輸入更多資料。
這題我一開始不太清楚他的意思,所以無從做起,就先跳到Exercise14。其實這題的習題是要承接Exercise14的伏筆。所以等我寫完Exercise14,再回來解釋這題習題吧~
Exercise14,這章習題主要是練習如何將gets.chomp和ARGV合在一起,讓使用者可以輸入多一點資料。
廢話不多說,我先PO上程式碼。
第一行變數的宣告是抓第一個參數的值(ARGV.first)設定給user_name。
usre_name = ARGV.first
第二行宣告一個變數prompt為字元 > ,作用是提示使用者輸入資料。(詳見右邊終端機執行結果)
在第7行,會發現在gets前面多加了一個$stdin(前面的$字號不可以省略喔!),這是什麼呢?在C裡面,stdin是代表標準輸入的意思,在Ruby的世界也是一樣,它就是代表標準輸入。
所以,當執行程式時,輸入了一個參數。程式會將這個參數抓起來設定給user_name,並在後面的程式顯示這個變數的值。
OK!在回去寫Exercise13的最後一題習題。(不解釋囉~)
OK!那今天的進度就到這邊囉~明天見!
By 小K