Ruby 是一種知名的程式語言。它旨在提高簡潔性與生產力。它也是一種完全物件導向的程式語言。此外,Ruby 具有優雅的語法,讀起來自然且易於撰寫。
任何程式設計都需要管理各種資料類型。資料類型描述了特定的資料類別。它告訴機器在程式中應該如何處理該資料。資料類型對於決定可以對資料進行哪些操作(包括可以執行的運算)至關重要。在本教學中,我們將深入探討 Ruby 中可用的資料類型。我們還將探索動態型別。使用此功能,Ruby 可以自動確定變數的資料類型,而無需顯式宣告它。讓我們開始吧!
先決條件
要練習並實作本指南中示範的步驟,您將需要以下組件:
- 配置妥當的 Linux 系統。深入了解關於在 CloudSigma 上設定個人 Ubuntu 伺服器.
- 配置妥當的 Ruby 開發環境。請參閱在 Ubuntu 上安裝 Ruby 的官方文件(使用 APT).
Ruby 中的資料類型
Ruby 具備您在任何程式語言中都會遇到的所有常見資料類型:整數、浮點數、字串、陣列、符號、雜湊等。接下來,我們將概述如何使用 Ruby 的各種資料類型。
步驟 1 – 整數
與數學類似,整數 在電腦程式設計中是整數。其值可以是正數、負數或 0。值範圍如下:
|
1 |
{-∞, …, -1, 0, 1, …, ∞} |
是時候在 Ruby 中嘗試整數了。第一個範例是在螢幕上列印一個簡單的整數:
|
1 2 |
print 99 print "\n" |
接下來,我們將使用整數變數。在這裡,變數 sample_int 包含一個整數值 (99),而 print 函數會在螢幕上列印該變數值:
|
1 2 3 |
sample_int = 99 print sample_int print "\n" |
我們也可以對整數進行數學運算。以下範例示範了兩個整數的簡單相加:
|
1 2 3 |
sample_int = 99 + 100 print sample_int print "\n" |
當我們’處理大數字時,我們經常使用逗號 (,) 來使其更易於閱讀。例如,一百萬 (1000000) 寫成 1,000,000 以獲得更好的可讀性。雖然禁止使用逗號,但 Ruby 允許使用底線 ( _) 作為分隔符。請看以下範例:
|
1 2 3 |
sample_int = 1_000_999 print sample_int print "\n" |
使用底線可以提高程式碼的可讀性,尤其是在處理大整數值時。
步驟 2 – 浮點數
一個floating-point number (簡稱 float)表示一個實數。與數學定義類似,實數可以是確定的有理數或無理數。在 Ruby 中,浮點數基本上就是包含小數點的數字。
讓我們嘗試在螢幕上列印一個浮點數值:
|
1 2 |
print 55.66 print "\n" |
下一個範例示範了宣告一個浮點數變數:
|
1 2 3 |
sample_float = 55.66 print sample_float print "\n" |
我們也可以對浮點數值和變數進行各種數學運算。以下範例示範了兩個浮點數的簡單相加:
|
1 2 3 |
sample_float = 55.66 + 99.222 print sample_float print "\n" |
如果我們將浮點數和整數相加會怎樣?結果值將會是浮點數。在以下範例中,儘管 55.0 是一個整數,但它仍被視為浮點數:
|
1 2 3 |
sample_float = 55.0 + 10 print sample_float print "\n" |
步驟 3 – 布林值
布林值 代表數學邏輯分支的真假值。在 Ruby 中,布林資料類型由兩個值表示: true 和 false:
-
大於
-
100 > 99: true
-
99 > 100: false
-
-
小於
-
500 < 999: true
-
999 < 500: false
-
-
等於
-
10 == 10: true
-
9 == 99: false
-
與數字類似,我們也可以儲存 true 或 false 變數中的值。以下範例示範了此功能:
|
1 2 3 |
result = 9 == 99 print result print "\n" |
步驟 4 – 字串
在程式設計中,字串 是由一串字元(字母、數字和符號)所組成。在 Ruby 中,字串存在於單引號( ')或雙引號( ")中。我們已經詳細介紹過在 Ruby 中使用字串,因此這將是一個簡短的章節。
以下範例是一個基本的 hello world Ruby 程式:
|
1 |
print "hello world!\n" |
我們也可以將字串儲存在變數中。以下範例還結合了字串串接:
|
1 2 |
username = "Cloudsigma" print "hello, " + username + "!\n" |
步驟 5 – 陣列
陣列是一種資料結構,可以儲存相同資料型態且固定大小的元素集合。它也可以被概念化為相同資料型態的變數集合。它是大多數現代程式語言中最基本的資料結構之一。
在 Ruby 中,陣列的定義如下:
|
1 |
[value_1, value_2, …, value_N] |
我們可以建立目前討論過的任何其他資料型態(整數、浮點數和字串)的陣列。以下是一些範例:
-
整數:[-5, 0, 5]
-
浮點數:[-9.99, -6.99, -3.99, 0, 3.99]
-
字串:[“the”, “quick”, “brown”, “fox”]
以下範例實作了所有這些類型的陣列:
|
1 2 3 4 5 6 |
print [-5, 0, 5] print "\n" print [-9.99, -6.99, -3.99, 0, 3.99] print "\n" print ["the", "quick", "brown", "fox"] print "\n" |
請注意,當 print 函數遇到陣列時,它會在螢幕上印出整個陣列。為了更方便起見,您通常會將陣列作為變數使用。讓我們更新程式碼:
|
1 2 3 4 5 6 7 8 9 10 |
array_int = [-5, 0, 5] print array_int print "\n" array_float = [-9.99, -6.99, -3.99, 0, 3.99] print array_float print "\n" array_string = ["the", "quick", "brown", "fox"] print array_string print "\n" |
現在,我們可以處理陣列中的個別元素:
|
1 2 3 4 5 6 7 8 9 |
array_int = [-5, 0, 5] print array_int[2] print "\n" array_float = [-9.99, -6.99, -3.99, 0, 3.99] print array_float[1] print "\n" array_string = ["the", "quick", "brown", "fox"] print array_string[3] print "\n" |
請注意,在 Ruby 中,陣列的索引值是從 0 開始。
為了方便起見,Ruby 中的陣列提供了 .first 和 .last 方法,用於印出第一個和最後一個元素:
|
1 2 3 4 |
array_float = [-9.99, -6.99, -3.99, 0, 3.99] puts array_float.first puts array_float.last print "\n" |
在 Ruby 中,陣列還有另一個有趣的功能。它可以同時容納不同類型的資料。例如,您可以儲存字串、符號,甚至是其他陣列:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
mixed_array = [ "hello", 99.99, "world", [ "the", "quick", "brown", "fox" ] ] print mixed_array print "\n" print mixed_array[3] print "\n" |
步驟 6 – 符號
在 Ruby 中,symbol 是一種特殊的資料類型,其作用類似於標籤或識別碼。符號是不可變的,這意味著它們無法被修改。符號看起來就像是在宣告沒有任何值的變變數。
以下是符號的範例:
|
1 |
:time_zone |
通常,符號用於識別重要的事物。然而,在其他情況下,字串就綽綽有餘了。
Ruby 作為一種物件導向語言,將所有事物都視為物件(包括字串),並具有其獨特的記憶體位置,即使字串內容完全相同也是如此。然而,當您引用一個符號時,它在程式中的任何地方都是同一個物件,指向同一個記憶體位置。
步驟 7 – 雜湊
雜湊(Hash)是鍵和值的類字典集合。雜湊通常用於儲存相關數據,例如使用者的資訊。
以下是雜湊的簡短範例。我們建立了一個雜湊 user_info ,其中包含使用者的使用者名稱和密碼:
|
1 2 3 4 5 6 |
user_info = { "username" => "HelloWorld999", "password" => "password123" } print user_info print "\n" |
要檢索鍵值對的值,我們必須使用該鍵。以下範例示範了此過程:
|
1 2 3 4 5 6 7 |
user_info = { "username" => "HelloWorld999", "password" => "password123" } print user_info["username"] print "\n" |
Ruby 還允許使用稍微不同的語法來定義雜湊( : 以代替 =>):
|
1 2 3 4 5 6 |
user_info = { username: "HelloWorld999", password: "password123" } print user_info[:password] print "\n" |
此語法結構類似於其他語言中使用的語法,例如 JavaScript。在這種語法結構中,鍵被定義為符號。這就是為什麼我們不使用 "username",而是使用: username 來存取該值。
動態型別
您可能已經注意到,在宣告變數時,我們不需要明確指定資料類型。相反地,變數的值決定了其資料類型。Ruby 使用 dynamic typing,其中型別檢查是在執行期(runtime)進行的。相反地,在 static typing 程式語言(例如 C/C++)中,資料類型是在編譯期間確定的。
在以下範例中,指派給變數 dyn_var 的所有值都是有效的:
|
1 2 3 4 5 |
dyn_var = 123 dyn_var = 456.789 dyn_var = true dyn_var = "the quick brown fox" dyn_var |
在動態型別語言中,我們可以自由地重複使用現有的變數來儲存不同的資料類型。在這裡,我們更新了前面的範例來示範這種現象:
|
1 2 3 4 5 6 7 |
dyn_var = 123 puts dyn_var dyn_var = 456.789 dyn_var = true dyn_var = "the quick brown fox" puts dyn_var dyn_var |
如本例所示,每次指派新值時,它都會隨之改變 dyn_var 的資料類型。這在將一種資料類型轉換為另一種資料類型時非常有用。以下範例示範了這一點:
|
1 2 3 4 |
print "enter length: " length = gets.chop length = length.to_f puts length |
在這裡,
-
因為鍵盤輸入是字串,所以 length 起初是一個字串。
-
由於我們期望的值是浮點數,因此我們使用 to_f 方法將字串值轉換為浮點數。
-
由於值的改變, length 被指派了浮點數資料類型。這就是我們在螢幕上列印其值時所看到的。
如果我們嘗試將兩種不同的資料類型混合在一起會發生什麼事?Ruby 將會拋出錯誤。請看:
|
1 |
print 9 + "77" |
資料類型識別
在 Ruby 中,一切都被視為物件。Ruby 中的每個物件都帶有方法 class。當被呼叫時,此方法會指出來源的資料類型。以下是一些使用 class 方法:
|
1 2 3 4 |
puts 55.class puts (55.55).class puts true.class puts nil.class |
另一種辨識資料類型的方法是使用 kind_of? 方法。它會根據要求的資料類型檢查物件的資料類型,並傳回布林值。請參考以下範例:
|
1 2 |
puts 55.kind_of?(Float) puts 55.kind_of?(Integer) |
同樣地,還有另一個方法 is_a?,它會比較資料類型並傳回布林值。唯一的差別在於方法的名稱。然而,它可能更受歡迎,因為對開發人員來說,它稍微更容易閱讀和理解。請使用 更新先前的範例is_a?:
|
1 2 |
puts 55.is_a?(Float) puts 55.is_a?(Integer) |
結語
使用任何程式語言都需要對其支援的資料類型有深入的了解。在本指南中,我們探索了 Ruby 程式設計中最常用的資料類型。我們討論並示範了整數、浮點數、字串、符號、布林值和雜湊(附範例)。
看看我們部落格中更多能幫助您探索 Ruby 的教學課程:
- 在 Ubuntu 20.04 上使用 RVM 安裝 Ruby on Rails
- 使用 PostgreSQL 設定 Ruby on Rails
- 在 Ubuntu 21.04 上的 Ruby on Rails 應用程式中使用 MySQL
- 探索 CloudSigma PaaS:如何利用 Ruby PaaS 託管服務?
祝您運算愉快!




































留言
目前尚無留言。成為第一個留言的人吧。