紅袖添香,絕代妖嬈,Ruby語言基礎入門教程之Ruby3基礎語法,第一次親密接觸EP01

劉悅的技術部落格發表於2022-12-23

書接上回,前一篇我們在全平臺構建好了Ruby3的開發環境,現在,可以和Ruby3第一次親密接觸了。

Ruby是一門在物件導向層面無所不用其極的解釋型程式語言。

我們可以把編寫Ruby程式碼看作是一場行為上的藝術,編碼就像跳舞一樣,Ruby的每一步都很優雅,幾乎沒有一步是多餘的。

第一行程式碼

進入系統的irb終端,輸入第一行程式碼:

irb(main):001:0> puts "你好 Ruby!"  
你好 Ruby!  
=> nil

puts關鍵字是 Ruby 語言裡用來列印的基本命令。第三行輸出的nil 是什麼?其實是puts命令的返回值, puts命令永遠返回 nil,nil也是 Ruby 的空值,可以理解為Python中的None關鍵字。

Ruby同時提供了一個更簡單的輸出物件內容的方法:p

irb(main):002:0> p "你好 Ruby!"  
"你好 Ruby!"  
=> "你好 Ruby!"

puts方法輸出數值 1 和字串 "1"時,結果都只是單純的 1。這樣一來,我們就無法判斷輸出的結果到底是屬於哪個物件。此種種情況下,p方法可以很好地解決這個問題。使用 p方法時,數值結果和字串結果會以不同的形式輸出:

irb(main):003:0> puts "1"  
1  
=> nil  
irb(main):004:0> puts 1  
1  
=> nil  
irb(main):005:0> p "1"  
"1"  
=> "1"  
irb(main):006:0> p 1  
1  
=> 1  
irb(main):007:0>

藉此,編碼過程中我們可以透過p方法快速列印一個變數並且知曉其資料型別。

和Python一樣,Ruby3也具有print方法:

irb(main):007:0> print "你好","Ruby"  
你好Ruby=> nil  
irb(main):008:0> puts "你好","Ruby"  
你好  
Ruby  
=> nil

print方法與puts方法和p方法稍有區別,puts方法在輸出結果的末尾一定會輸出換行符,而print方法則不會,由此,我們可以將print方法理解為省略換行的puts方法,在列印多個變數時,新增換行的puts方法無疑更友好。

單引號和雙引號

Ruby3的字串物件生成有兩種方式,字串文字值加單引號或加雙引號。 兩種方式主要區別在於構造文字量時,對字串的處理次數不同。 單引號時,Ruby對字串值不做處理,裡邊是什麼就是什麼。 雙引號時,Ruby首先要查詢文字中要替換的字元,即帶反斜槓的字元,用二進位制替換。

irb(main):011:0> puts "你好 \n Ruby"  
你好   
 Ruby  
=> nil  
irb(main):012:0> puts '你好 \n Ruby'  
你好 \n Ruby  
=> nil

也可以理解為單引號是原樣輸出,而雙引號則會替換為變數實體。

空白字元

和Python不同的是,空格和製表符之類的空格字元通常在Ruby3程式碼中會被忽略,除非它們出現在字串中。但是,有時它們被用來解釋模稜兩可的陳述。啟用-w選項時,此類解釋會產生警告:

irb(main):013:0> puts    '你好 \n Ruby',    "前面好多空格"  
你好 \n Ruby  
前面好多空格  
=> nil

長字串

Ruby也可以多行構建字串。在 << 之後,可以指定字串或識別符號以終止字串文字,並且當前行之後直至終止符的所有行都是字串的值。如果用引號引起來,則引號的型別確定面向行的字串文字的型別。注意,<< 和終止符之間不能有空格:

irb(main):035:0" puts <<"EOF"                 
irb(main):036:0"   第一行  
irb(main):037:0"   第二行  
irb(main):038:0> EOF  
  第一行  
  第二行  
=> nil  
irb(main):039:0>

BEGIN和END語句

Ruby可以在程式中宣告BEGIN作為初始執行的邏輯以及END作為程式結束時執行的邏輯:

puts "這是主執行緒Ruby3程式"  
  
END {  
   puts "Ruby3程式結束"  
}  
  
BEGIN {  
   puts "Ruby3程式開始"  
}

程式碼註釋

註釋可以在Ruby直譯器中隱藏一行,一行的一部分或幾行,作為不執行的程式碼,可以在行的開頭使用井號(#)

irb(main):069:0* # 我是一個註釋。忽略我。  
irb(main):070:0*

註釋也可以在語句或表示式後的同一行上:

irb(main):070:0> name = "v3u.cn" # 這又是一個註釋  
=> "v3u.cn"  
irb(main):071:0>

也可以透過使用=begin/=end從Ruby3直譯器中隱藏了多行程式碼:

=begin  
這是一條註釋。  
這也是註釋。  
這也是註釋。  
這還是註釋。  
=end

編輯器(Vscode)

如果厭倦了在irb命令列中編寫Ruby程式碼,我們也可以在編輯器中隨心所欲地編寫,這裡推薦微軟開源的Vscode編輯器,下載地址:https://code.visualstudio.com/

安裝好之後,只需要安裝ruby外掛即可:

隨後編寫test.rb檔案:

puts "你好,Vscode"

右鍵執行Ruby指令碼:

簡單方便,開箱可用。

結語

Ruby可以以最少的程式碼量解決問題,又不失可讀性,優雅而又不乏實用,如果你有夢想,就一定看得到這顆紅寶石和夢中的一樣動人妖嬈。

相關文章