Ruby 入門指南 - 資料型態與變數

Ruby 的資料型態 (data type) 主要有數字 (number) 、字串 (string) 、範圍 (range) 與正規運算式 (regular expression)




不含小數點的數字為整數 (integer) ,含小數點就是浮點數 (floating-point number) ,使用上不必太擔心,常數形式就是物件 (object) ,例如
# 印出 10 個 1.0
10.times {
    print 1.0
}
puts


10 就是個物件,此例為 10 呼叫 times 方法 (method) ,這會重複執行後面大括弧 10 次。 print 亦為輸出內容道電腦螢幕的方法,與 puts 的差別是不會輸出新行字元 '\n' 。


字串 (string) 則是用單引號或雙引號圍起來的內容,兩者的差別是雙引號中還可以用變數 (variable) 與跳脫序列 (escape sequence) ,例如
puts 'Hello world!' # 印出 Hello world!
puts 'Hello\tworld!' # 印出 Hello\tworld!
puts "Hello\tworld!" # 印出 Hello world!
code = "abc" # 變數 code 設定為字串 abc
puts "code: #{code}" # 印出 code: abc


跳脫序列是一些不可見字元,由斜線 \ 開始,然後接一些特定的英文字元,常見的有
跳脫序列的字元說明
\a響鈴
\b倒退鍵
\f跳頁
\n印出新列
\r歸位符號
\ttab 鍵
\v垂直定位符號
\\印出反斜線
\?印出問號
\'印出單引號
\"印出雙引號


變數就自己定義的名稱,可以用來儲存某些物件,例如上面用 code 儲存 "abc" 字串物件,而字串中代入變數要用井字號 # 開始,然後接大括弧
puts "code: #{code}" # 印出 code: abc


範圍是一種依序取得具有多個元素的物件,通常用來取得兩個常數之間的值,例如
digits = 0..9
puts digits  # 印出 0..9
puts digits.include?(5) # 印出 true
puts digits.min # 印出 0
puts digits.max # 印出 9
print digits.reject {|i| i < 5 } # 印出 [5, 6, 7, 8, 9]
puts
puts
str = "can".."cat"
puts str.min # 印出 can
puts str.max # 印出 cat
print str.reject {|i|} # 印出 ["can", "cao", "cap", "caq", "car", "cas", "cat"]
puts


digits 取得 0 到 9 之間的連續 10 個數字,同樣的 str 取得 can 到 cat 之間的 7 個字串。


正規運算式為兩個反斜線之間的內容
/something/ # 配對 something
/at/ # 配對 at
/[a-z]/ # 配對 a 到 z 之間任一字元
/[aeiou]/ # 配對 a 、 e 、 i 、 o 、 u 任一字元


反斜線之間就是配對的文字,除了實際把文字寫出來外,也可用功能字元組合,例如上面用中括弧表示某些字元的集合。下面是常見的功能字元
功能字元說明
.任何單一字元
|
()群組
[]字元集合
{}出現次數
+至少出現 1 次
\表示功能字元
^開頭
$結尾
*0 次或多次出現
?出現 0 次或 1 次
\b相接文字
\B沒有相接文字
\d數字字元
\D非數字字元
\s空白字元
\S非空白字元
\w文字字元
\W非文字字元


另外有個常數很特別,這個常數就是 nilnil 什麼都不是,若變數指派到 nil ,這變數就如同空值。


Ruby 依前綴區分變數的種類,有三種不同的變數。接下來,我們來看看變數命名規則吧!


中英文術語對照
資料型態data type
數字number
字串string
範圍range
正規運算式regular expression
整數integer
浮點數floating-point number
物件object
方法method
字串string
變數variable
跳脫序列escape sequence


您可以繼續參考
基礎篇


相關目錄
回 Ruby 入門指南
回 Ruby 教材
回首頁


參考資料
http://www.rubyist.net/~slagell/ruby/variables.html
http://www.rubyist.net/~slagell/ruby/strings.html
http://www.rubyist.net/~slagell/ruby/regexp.html
http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_stdtypes.html

沒有留言: