Ruby 教學 - 基本語法 (Syntax)
如何執行 Ruby
Ruby 有以下三種方式可以執行 Ruby 指令
建立 Ruby 程式檔案
最基本的方式當然是建立 Ruby 的檔案,將程式撰寫在檔案中後執行,Ruby 的程式檔案使用 .rb
作為副檔名,例如我們建立一個 hello_world.rb 如下:
1 | puts "Hello, World!" |
接著利用 Ruby 指令執行程式:
1 | ruby hello_world.rb |
執行結果
1 | Hello, World! |
在 Unix 環境下希望他可以直接執行的話,將檔案權限改為可執行,並加上 shebang line 宣告使用 ruby 來執行,如同其他程式語言一樣:
1 | chmod 755 hello_world.rb |
並將 hello_world.rb 改為
1 |
|
之後可直接執行
1 | ./hello_world.rb |
使用 Interactive Ruby 介面
Ruby 另外提供了一支程式叫 irb
,意即 Interactive Ruby,就是可以互動式地執行 Ruby 指令,直接執行 irb 就可以進入該介面:
1 | irb |
會看到如下的畫面
1 | 2.1.1 :001 > |
接著就可以開始輸入Ruby程式:
1 | 2.1.1 :001 > puts "Hello, World!" |
如果想離開 irb 可以輸入 exit
或 quit
即可,平常要測試或練習一些指令的時候,可以利用 irb 快速的執行與驗證。
另外,在預設情況下會顯示 Ruby 版本和執行行號,如果不想要顯示,可以加上參數 --simple-prompt
:
1 | irb --simple-prompt |
就只會看到
1 | >> |
使用 One-liner
最後一個方法一樣是使用 Ruby 的指令,另用參數 -e
帶入 ruby 程式字串來執行,其中 e 表示 evaluate:
1 | ruby -e "puts 'Hello, World'" |
這個用法被稱為 One-liner。
註解
Ruby 中有兩種註解方式。
單行註解
單行註解使用井號 (#
) 開始,後面的部分為註解直到該行結束,
1 | # 單行註解:井號後面的部份將不會處理。 |
多行註解
多行註解使用 =begin
和 =end
包夾註解內容,必須是在該行開頭
1 | =begin |
編碼
Ruby 2.0 之前預設使用 US-ASCII,所以在程式中如果出現中文字之類的字元將會出錯,例如將 hello_world.rb 改成:
1 | puts "哈囉, 世界!" |
執行結果
1 | hello_world.rb:1: invalid multibyte char (US-ASCII) |
這時必須在程式最開頭加上特殊的註解來進行編碼宣告
1 | # encoding: UTF-8 |
執行結果
1 | 哈囉, 世界! |
Ruby 實際上檢查的是 coding:xxx 的格式來作為編碼的判斷,所以以下的寫法都會成功判斷為 UTF-8
1 | # coding: UTF-8 |
不過一般習慣使用 encoding 來宣告。
如果已經升級到 Ruby 2.0 之後的版本預設已經是 UTF-8,所以就不會有這個問題了。
函式呼叫
Ruby 的函式呼叫括號可以省略,所以像上面的 Hello World 程式,下面兩種寫法都是可以的:
1 | puts "Hello, World!" |
單一指令的時候通常會省略括號。
輸出指令
Ruby 提供三種不同的輸出指令 puts
, print
和 p
,略有差異。
- puts: 將參數執行
to_s
之後輸出 (但陣列型別會做逐一取出的動作),結尾斷行 - print: 將參數執行
to_s
之後輸出,結尾不斷行 - p: 將參數執行
inspect
之後輸出,結尾斷行 (相當於 puts xxx.inspect)
例如:
1 | puts :Hello |
結果
1 | Hello |
輸入陣列的時候
1 | a = ["Hello", "World"] |
結果
1 | Hello |