書接上回,前一篇我們在全平臺構建好了Ruby3的開發環境,現在,可以和Ruby3第一次親密接觸了。 Ruby是一門在面向對象層面無所不用其極的解釋型編程語言。 我們可以把編寫Ruby代碼看作是一場行為上的藝術,編碼就像跳舞一樣,Ruby的每一步都很優雅,幾乎沒有一步是多餘的。 第一行代碼 進入系統的 ...
書接上回,前一篇我們在全平臺構建好了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可以以最少的代碼量解決問題,又不失可讀性,優雅而又不乏實用,如果你有夢想,就一定看得到這顆紅寶石和夢中的一樣動人妖嬈。