Ruby 語法

讓我們編寫一個簡單的 Ruby 程式。所有的 Ruby 檔擴展名都是 .rb。所以,把下麵的源代碼放在 test.rb 檔中。

實例

#!/usr/bin/ruby -w puts "Hello, Ruby!";

在這裏,假設您的 /usr/bin 目錄下已經有可用的 Ruby 解釋器。現在,嘗試運行這個程式,如下所示:

$ ruby test.rb

這將會產生下麵的結果:

Hello, Ruby!

您已經看到了一個簡單的 Ruby 程式,現在讓我們看看一些 Ruby 語法相關的基本概念:

Ruby 程式中的空白

在 Ruby 代碼中的空白字元,如空格和跳位字元一般會被忽略,除非當它們出現在字串中時才不會被忽略。然而,有時候它們用於解釋模棱兩可的語句。當啟用 -w 選項時,這種解釋會產生警告。

實例:

a + b 被解釋為 a+b (這是一個局部變數)
a  +b 被解釋為 a(+b) (這是一個方法調用)

Ruby 程式中的行尾

Ruby 把分號和換行符解釋為語句的結尾。但是,如果 Ruby 在行尾遇到運算符,比如 +、- 或反斜杠,它們表示一個語句的延續。

Ruby 識別字

識別字是變數、常量和方法的名稱。Ruby 識別字是大小寫敏感的。這意味著 Ram 和 RAM 在 Ruby 中是兩個不同的識別字。

Ruby 識別字的名稱可以包含字母、數字和下劃線字元( _ )。

保留字

下表列出了 Ruby 中的保留字。這些保留字不能作為常量或變數的名稱。但是,它們可以作為方法名。

BEGINdonextthen
ENDelseniltrue
aliaselsifnotundef
andendorunless
beginensureredountil
breakfalserescuewhen
caseforretrywhile
classifreturnwhile
definself__FILE__
defined?modulesuper__LINE__

Ruby 中的 Here Document

"Here Document" 是指建立多行字串。在 << 之後,您可以指定一個字串或識別字來終止字串,且當前行之後直到終止符為止的所有行是字串的值。

如果終止符用引號括起,引號的類型決定了面向行的字串類型。請注意<< 和終止符之間必須沒有空格。

下麵是不同的實例:

實例

#!/usr/bin/ruby -w # -*- coding : utf-8 -*- print <<EOF 這是第一種方式創建here document 。 多行字串。 EOF print <<"EOF"; # 與上面相同 這是第二種方式創建here document 。 多行字串。 EOF print <<`EOC` # 執行命令 echo hi there echo lo there EOC print <<"foo", <<"bar" # 您可以把它們進行堆疊 I said foo. foo I said bar. bar

這將產生以下結果:

這是第一種方式創建here document 。

多行字串。

這是第二種方式創建here document 。

多行字串。

hi there
lo there
I said foo.
I said bar.

Ruby BEGIN 語句

語法

BEGIN {
   code
}

聲明 code 會在程式運行之前被調用。

實例

#!/usr/bin/ruby puts "這是主 Ruby 程式" BEGIN { puts "初始化 Ruby 程式" }

這將產生以下結果:

初始化 Ruby 程式
這是主 Ruby 程式

Ruby END 語句

語法

END {
   code
}

聲明 code 會在程式的結尾被調用。

實例

#!/usr/bin/ruby puts "這是主 Ruby 程式" END { puts "停止 Ruby 程式" } BEGIN { puts "初始化 Ruby 程式" }

這將產生以下結果:

初始化 Ruby 程式
這是主 Ruby 程式
停止 Ruby 程式

Ruby 注釋

注釋會對 Ruby 解釋器隱藏一行,或者一行的一部分,或者若干行。您可以在行首使用字元( # ):

# 我是注釋,請忽略我。

或者,注釋可以跟著語句或運算式的同一行的後面:

name = "Madisetti" # 這也是注釋

您可以注釋多行,如下所示:

# 這是注釋。 # 這也是注釋。 # 這也是注釋。 # 這還是注釋。

下麵是另一種形式。這種塊注釋會對解釋器隱藏 =begin/=end 之間的行:

=begin 這是注釋。 這也是注釋。 這也是注釋。 這還是注釋。 =end