- Ruby 基礎
- Ruby - 首頁
- Ruby - 概述
- Ruby - 環境設定
- Ruby - 語法
- Ruby - 類和物件
- Ruby - 變數
- Ruby - 運算子
- Ruby - 註釋
- Ruby - IF...ELSE
- Ruby - 迴圈
- Ruby - 方法
- Ruby - 程式碼塊
- Ruby - 模組
- Ruby - 字串
- Ruby - 陣列
- Ruby - 雜湊
- Ruby - 日期和時間
- Ruby - 範圍
- Ruby - 迭代器
- Ruby - 檔案輸入/輸出
- Ruby - 異常
Ruby - 變數、常量和文字
變數是記憶體位置,用於儲存任何程式使用的資料。
Ruby 中有五種型別的變數。您已經在上一章中介紹了這些變數的簡要描述。本章將對這五種型別的變數進行說明。
Ruby 全域性變數
全域性變數以 $ 開頭。未初始化的全域性變數的值為 nil,並且會產生 -w 選項的警告。
對全域性變數的賦值將更改其全域性狀態。不建議使用全域性變數。它們會使程式難以理解。
以下是顯示全域性變數用法的示例。
#!/usr/bin/ruby
$global_variable = 10
class Class1
def print_global
puts "Global variable in Class1 is #$global_variable"
end
end
class Class2
def print_global
puts "Global variable in Class2 is #$global_variable"
end
end
class1obj = Class1.new
class1obj.print_global
class2obj = Class2.new
class2obj.print_global
此處 $global_variable 是一個全域性變數。這將產生以下結果 −
注意 − 在 Ruby 中,可以透過在變數或常量之前放置一個井號 (#) 字元來訪問它們的任何值。
Global variable in Class1 is 10 Global variable in Class2 is 10
Ruby 例項變數
例項變數以 @ 開頭。未初始化的例項變數的值為 nil,並且會產生 -w 選項的警告。
以下是顯示例項變數用法的示例。
#!/usr/bin/ruby
class Customer
def initialize(id, name, addr)
@cust_id = id
@cust_name = name
@cust_addr = addr
end
def display_details()
puts "Customer id #@cust_id"
puts "Customer name #@cust_name"
puts "Customer address #@cust_addr"
end
end
# Create Objects
cust1 = Customer.new("1", "John", "Wisdom Apartments, Ludhiya")
cust2 = Customer.new("2", "Poul", "New Empire road, Khandala")
# Call Methods
cust1.display_details()
cust2.display_details()
此處,@cust_id、@cust_name 和 @cust_addr 是例項變數。這將產生以下結果 −
Customer id 1 Customer name John Customer address Wisdom Apartments, Ludhiya Customer id 2 Customer name Poul Customer address New Empire road, Khandala
Ruby 類變數
類變數以 @@ 開頭,並且必須在可以在方法定義中使用它們之前對其進行初始化。
引用未初始化的類變數將會產生錯誤。類變數在定義類變數的類或模組的後代之間共享。
覆蓋類變數將會產生 -w 選項的警告。
以下是顯示類變數用法的示例 −
#!/usr/bin/ruby
class Customer
@@no_of_customers = 0
def initialize(id, name, addr)
@cust_id = id
@cust_name = name
@cust_addr = addr
end
def display_details()
puts "Customer id #@cust_id"
puts "Customer name #@cust_name"
puts "Customer address #@cust_addr"
end
def total_no_of_customers()
@@no_of_customers += 1
puts "Total number of customers: #@@no_of_customers"
end
end
# Create Objects
cust1 = Customer.new("1", "John", "Wisdom Apartments, Ludhiya")
cust2 = Customer.new("2", "Poul", "New Empire road, Khandala")
# Call Methods
cust1.total_no_of_customers()
cust2.total_no_of_customers()
此處 @@no_of_customers 是一個類變數。這將產生以下結果 −
Total number of customers: 1 Total number of customers: 2
Ruby 區域性變數
區域性變數以小寫字母或 _ 開頭。區域性變數的範圍從 class、module、def 或 do 到相應的 end,或者從程式碼塊的左花括號到右花括號 {}。
引用未初始化的區域性變數時,將把它解釋為對無引數方法的呼叫。
對未初始化的區域性變數進行賦值也如同變數宣告。變數從宣告到當前範圍結束才會存在。區域性變數的生命週期在 Ruby 解析程式時確定。
在以上示例中,區域性變數為 id、name 和 addr。
Ruby 常量
常量以大寫字母開頭。在類或模組內定義的常量可從類或模組內訪問,而類或模組之外定義的常量在全域性範圍內可訪問。
常量不能在方法內定義。引用未初始化的常量會產生錯誤。對已初始化的常量進行賦值會產生警告。
#!/usr/bin/ruby
class Example
VAR1 = 100
VAR2 = 200
def show
puts "Value of first Constant is #{VAR1}"
puts "Value of second Constant is #{VAR2}"
end
end
# Create Objects
object = Example.new()
object.show
此處 VAR1 和 VAR2 是常量。這將產生以下結果:
Value of first Constant is 100 Value of second Constant is 200
Ruby 偽變數
偽變數類似於本地變數,但行為類似於常量。不能為這些變數指定任何值。
self − 當前方法的接收器物件。
true − 表示真值的變數。
false − 表示假值的變數。
nil − 表示未定義的變數。
__FILE__ − 當前原始檔的檔名。
__LINE__ − 原始檔中的當前行號。
Ruby 基本文字
Ruby 對文字所使用的規則非常簡單直觀。本部分解釋了所有基本的 Ruby 文字。
整數
Ruby 支援整數。整數的範圍為 -230 至 230-1 或 -262 至 262-1。此範圍內的整數為 Fixnum 類的物件,此範圍外的整數儲存在 Bignum 類的物件中。
編寫整數時,可以使用可選的前導符號、可選的進位制指示器(0 表示八進位制、0x 表示十六進位制或 0b 表示二進位制),後跟相應進位制的數字字串。數字字串中忽略下劃線字元。
還可以獲取 ASCII 字元對應的整數值,或使用問號字首轉義該序列。
示例
123 # Fixnum decimal 1_234 # Fixnum decimal with underline -500 # Negative Fixnum 0377 # octal 0xff # hexadecimal 0b1011 # binary ?a # character code for 'a' ?\n # code for a newline (0x0a) 12345678901234567890 # Bignum
注意 − 類和物件在教程的單獨章節中進行了說明。
浮點數
Ruby 支援浮點數。它們也是數字,不過帶有小數部分。浮點數是 Float 類的物件,可以為以下任何型別:
示例
123.4 # floating point value 1.0e6 # scientific notation 4E20 # dot not required 4e+20 # sign before exponential
字串文字
Ruby 字串是 8 位位元組的序列,它們是 String 類的物件。雙引號字串允許替換和反斜槓符號,但單引號字串不允許替換,僅允許使用反斜槓符號 \\ 和 \'
示例
#!/usr/bin/ruby -w puts 'escape using "\\"'; puts 'That\'s right';
這將產生以下結果:
escape using "\" That's right
可以使用序列 #{ expr } 將任何 Ruby 表示式的值代入字串中。其中,expr 可以是任何 Ruby 表示式。
#!/usr/bin/ruby -w
puts "Multiplication Value : #{24*60*60}";
這將產生以下結果:
Multiplication Value : 86400
反斜槓符號
以下是 Ruby 支援的反斜槓符號列表:
| 符號 | 表示的字元 |
|---|---|
| \n | 換行符 (0x0a) |
| \r | 回車符 (0x0d) |
| \f | 換頁符 (0x0c) |
| \b | 退格符 (0x08) |
| \a | 鈴聲 (0x07) |
| \e | 轉義符 (0x1b) |
| \s | 空格符 (0x20) |
| \nnn | 八進位制符號 (n 的取值範圍為 0-7) |
| \xnn | 十六進位制符號 (n 的取值範圍為 0-9、a-f 或 A-F) |
| \cx, \C-x | Control-x |
| \M-x | Meta-x (c | 0x80) |
| \M-\C-x | Meta-Control-x |
| \x | 字元 x |
有關 Ruby 字串的更多詳細資訊,請參閱 Ruby 字串。
Ruby 陣列
Ruby 陣列的文字透過在方括號之間放置一個以逗號分隔的物件引用系列來建立。忽略末尾的逗號。
示例
#!/usr/bin/ruby ary = [ "fred", 10, 3.14, "This is a string", "last element", ] ary.each do |i| puts i end
這將產生以下結果:
fred 10 3.14 This is a string last element
有關 Ruby 陣列的更多詳細資訊,請參閱 Ruby 陣列。
Ruby 雜湊
Ruby 雜湊文字是透過在大括號之間放置鍵/值對列表來建立的,其中鍵和值之間帶有逗號或 => 序列。忽略末尾的逗號。
示例
#!/usr/bin/ruby
hsh = colors = { "red" => 0xf00, "green" => 0x0f0, "blue" => 0x00f }
hsh.each do |key, value|
print key, " is ", value, "\n"
end
這將產生以下結果:
red is 3840 green is 240 blue is 15
有關 Ruby 雜湊的更多詳細資訊,請參閱 Ruby 雜湊。
Ruby 範圍
範圍表示一個區間,即一個具有起始值和結束值的值集合。範圍可以使用 s..e 和 s...e 文字或 Range.new 來構建。
使用 .. 構建的範圍從起始值執行到結束值,含結束值。使用 ... 建立的範圍不包含結束值。用作迭代器時,範圍將返回序列中的每個值。
範圍 (1..5) 表示它包含值 1、2、3、4、5,而範圍 (1...5) 表示它包含值 1、2、3、4。
示例
#!/usr/bin/ruby (10..15).each do |n| print n, ' ' end
這將產生以下結果:
10 11 12 13 14 15
有關 Ruby 範圍的更多詳細資訊,請參閱 Ruby 範圍。