如何執行 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
2
3
#!/usr/bin/ruby

puts "Hello, World!"

之後可直接執行

1
./hello_world.rb

使用 Interactive Ruby 介面

Ruby 另外提供了一支程式叫 irb,意即 Interactive Ruby,就是可以互動式地執行 Ruby 指令,直接執行 irb 就可以進入該介面:

1
irb

會看到如下的畫面

1
2.1.1 :001 >

接著就可以開始輸入Ruby程式:

1
2
3
4
2.1.1 :001 > puts "Hello, World!"
Hello, World!
=> nil
2.1.1 :002 >

如果想離開 irb 可以輸入 exitquit 即可,平常要測試或練習一些指令的時候,可以利用 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
2
3
=begin
多行註解:註解中間的部份將不會處理。
=end

編碼

Ruby 2.0 之前預設使用 US-ASCII,所以在程式中如果出現中文字之類的字元將會出錯,例如將 hello_world.rb 改成:

1
puts "哈囉, 世界!"

執行結果

1
2
hello_world.rb:1: invalid multibyte char (US-ASCII)
hello_world.rb:1: invalid multibyte char (US-ASCII)

這時必須在程式最開頭加上特殊的註解來進行編碼宣告

1
# encoding: UTF-8

執行結果

1
哈囉, 世界!

Ruby 實際上檢查的是 coding:xxx 的格式來作為編碼的判斷,所以以下的寫法都會成功判斷為 UTF-8

1
2
# coding: UTF-8
# this coding:UTF-8, it is multiple bytes

不過一般習慣使用 encoding 來宣告。

如果已經升級到 Ruby 2.0 之後的版本預設已經是 UTF-8,所以就不會有這個問題了。

函式呼叫

Ruby 的函式呼叫括號可以省略,所以像上面的 Hello World 程式,下面兩種寫法都是可以的:

1
2
puts "Hello, World!"
puts("Hello, World!")

單一指令的時候通常會省略括號。

輸出指令

Ruby 提供三種不同的輸出指令 puts, printp,略有差異。

  • puts: 將參數執行 to_s 之後輸出 (但陣列型別會做逐一取出的動作),結尾斷行
  • print: 將參數執行 to_s 之後輸出,結尾不斷行
  • p: 將參數執行 inspect 之後輸出,結尾斷行 (相當於 puts xxx.inspect)

例如:

1
2
3
puts :Hello
print :Hello
p :Hello

結果

1
2
Hello
Hello:Hello

輸入陣列的時候

1
2
3
4
a = ["Hello", "World"]
puts a
print a
p a

結果

1
2
3
Hello
World
["Hello", "World"]["Hello", "World"]

延伸閱讀

下一篇 Ruby 教學 - 資料型態 (Data Type)