Python 是另一種很棒的多功能用途程式語言。從 Python 轉換到 Ruby,你會發現需要比學 Python 時多記一些語法。
Ruby與Python類似的地方…
- 同樣有互動的提示操作環境 (叫做
irb
). - 你同樣可以使用指令來讀取文件 (Python使用
pydoc
指令,而Ruby使用ri
指令). - 每行程式碼同樣不需要特別的結尾符號 (除了一般的換行)。
- 字串可以像 Python 的三引號字串一樣的跨越多行。
- 中括號用來表示串列,大括號用來表示字典結構 (在Ruby稱為"hashes")。
- 陣列操作起來差不多 (陣列相加會產生一個更長的陣列, 但像
a3 = [ a1, a2 ]
這樣的操作會回傳一個二維陣列). - 物件是強型別而且也都是動態型別(dynamically typed)。
- 所有東西都是物件, 變數只是指向某個物件的參考指標。
- 有些關鍵字雖然看起來不太一樣,但在例外處理方面的操作是差不多的。
- 同樣也有嵌入式的文件工具 (在 Ruby 中叫做 rdoc)。
Ruby與Python不同的地方…
- 字串是可變動的。
- 你可以建立常數 (不想要再改變值的變數)。
- 有些大小寫的使用慣例 (例如類別名稱是以大寫字母開頭,一般變數則是使用小寫字母開頭)。
- 只有一種串列容器(陣列), 而且它是可變動的。
- Ruby的雙引號字串允許使用跳脫字元(escape sequences) (例如 \t) 以及特別的"運算取代(expression substitution)“語法 (可以讓你直接在字串裡直接插入Ruby運算後的結果,而不用像 @”add " + "strings " + "together"@ 的字串組合)。單引號字串則跟Python的
r"raw strings"
是一樣的。 - 沒有什麼"新式"或"舊式"的類別寫法,Ruby的類別就只有一種寫法。
- 你不能直接存取物件的屬性。在Ruby裡指能透過方法呼叫
- 方法呼叫時的小括號通常是可以省略的。
- 有
public
,private
, 以及protected
三種方式來設定存取層級,不像Python裡是用變數名稱前後加底線的方式表示。 - “混入(mixing)”功能用來替代多重繼承。
- 你可以新增或修改內建的類別。兩種程式語言都可以讓你在任何時機做這樣的修改, 但是Python會阻止你修改內建的類別 — Ruby則沒有這個限制。
- 使用
true
以及false
而不是True
跟False
(Python裡的@None@ 在Ruby則是nil
). - 在測試布林值的真假時,只有
false
跟nil
會得到假的值,其它所有的都會得到真值。(包括0
,0.0
,""
, 以及[]
). - Ruby使用
elsif
而不是elif
. - Ruby使用
require
而不是 @import@,但使用上跟Python是一樣的。 - 用來產生文件的註解通常寫在內容的_上面_ (而不像docstrings是寫在下面)。
- Ruby有許多的捷徑可以使用,雖然有比較多要記,但你可以很快學會。這些捷徑會讓Ruby變得更有趣而且更有生產力。