Permalink
Find file
Fetching contributors…
Cannot retrieve contributors at this time
36 lines (32 sloc) 2.89 KB

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 而不是 TrueFalse (Python裡的@None@ 在Ruby則是 nil).
  • 在測試布林值的真假時,只有 falsenil 會得到假的值,其它所有的都會得到真值。(包括 0, 0.0, "", 以及 []).
  • Ruby使用 elsif 而不是 elif.
  • Ruby使用 require 而不是 @import@,但使用上跟Python是一樣的。
  • 用來產生文件的註解通常寫在內容的_上面_ (而不像docstrings是寫在下面)。
  • Ruby有許多的捷徑可以使用,雖然有比較多要記,但你可以很快學會。這些捷徑會讓Ruby變得更有趣而且更有生產力。