返回部落格

Ruby 資料型態概述

Ruby 資料型態概述

Ruby 是一種知名的程式語言。它旨在提高簡潔性與生產力。它也是一種完全物件導向的程式語言。此外,Ruby 具有優雅的語法,讀起來自然且易於撰寫。

任何程式設計都需要管理各種資料類型。資料類型描述了特定的資料類別。它告訴機器在程式中應該如何處理該資料。資料類型對於決定可以對資料進行哪些操作(包括可以執行的運算)至關重要。在本教學中,我們將深入探討 Ruby 中可用的資料類型。我們還將探索動態型別。使用此功能,Ruby 可以自動確定變數的資料類型,而無需顯式宣告它。讓我們開始吧!

先決條件

要練習並實作本指南中示範的步驟,您將需要以下組件:

Ruby 中的資料類型

Ruby 具備您在任何程式語言中都會遇到的所有常見資料類型:整數、浮點數、字串、陣列、符號、雜湊等。接下來,我們將概述如何使用 Ruby 的各種資料類型。

步驟 1 – 整數

與數學類似,整數 在電腦程式設計中是整數。其值可以是正數、負數或 0。值範圍如下:

是時候在 Ruby 中嘗試整數了。第一個範例是在螢幕上列印一個簡單的整數:

Data Types in Ruby 1

接下來,我們將使用整數變數。在這裡,變數 sample_int 包含一個整數值 (99),而 print 函數會在螢幕上列印該變數值:

Data Types in Ruby 2

我們也可以對整數進行數學運算。以下範例示範了兩個整數的簡單相加:

當我們’處理大數字時,我們經常使用逗號 (,) 來使其更易於閱讀。例如,一百萬 (1000000) 寫成 1,000,000 以獲得更好的可讀性。雖然禁止使用逗號,但 Ruby 允許使用底線 ( _) 作為分隔符。請看以下範例:

Data Types in Ruby 3

使用底線可以提高程式碼的可讀性,尤其是在處理大整數值時。

步驟 2 – 浮點數

一個floating-point number (簡稱 float)表示一個實數。與數學定義類似,實數可以是確定的有理數或無理數。在 Ruby 中,浮點數基本上就是包含小數點的數字。

讓我們嘗試在螢幕上列印一個浮點數值:

下一個範例示範了宣告一個浮點數變數:

我們也可以對浮點數值和變數進行各種數學運算。以下範例示範了兩個浮點數的簡單相加:

如果我們將浮點數和整數相加會怎樣?結果值將會是浮點數。在以下範例中,儘管 55.0 是一個整數,但它仍被視為浮點數:

步驟 3 – 布林值

布林值 代表數學邏輯分支的真假值。在 Ruby 中,布林資料類型由兩個值表示: truefalse:

  • 大於

    • 100 > 99: true

    • 99 > 100: false

  • 小於

    • 500 < 999: true

    • 999 < 500: false

  • 等於

    • 10 == 10: true

    • 9 == 99: false

與數字類似,我們也可以儲存 truefalse 變數中的值。以下範例示範了此功能:

步驟 4 – 字串

在程式設計中,字串 是由一串字元(字母、數字和符號)所組成。在 Ruby 中,字串存在於單引號( ')或雙引號( ")中。我們已經詳細介紹過在 Ruby 中使用字串,因此這將是一個簡短的章節。

以下範例是一個基本的 hello world Ruby 程式:

我們也可以將字串儲存在變數中。以下範例還結合了字串串接:

Data Types in Ruby 4

步驟 5 – 陣列

陣列是一種資料結構,可以儲存相同資料型態且固定大小的元素集合。它也可以被概念化為相同資料型態的變數集合。它是大多數現代程式語言中最基本的資料結構之一。

在 Ruby 中,陣列的定義如下:

我們可以建立目前討論過的任何其他資料型態(整數、浮點數和字串)的陣列。以下是一些範例:

  • 整數:[-5, 0, 5]

  • 浮點數:[-9.99, -6.99, -3.99, 0, 3.99]

  • 字串:[“the”, “quick”, “brown”, “fox”]

以下範例實作了所有這些類型的陣列:

Data Types in Ruby 5

請注意,當 print 函數遇到陣列時,它會在螢幕上印出整個陣列。為了更方便起見,您通常會將陣列作為變數使用。讓我們更新程式碼:

Data Types in Ruby 6

Data Types in Ruby 7

現在,我們可以處理陣列中的個別元素:

Data Types in Ruby 7

請注意,在 Ruby 中,陣列的索引值是從 0 開始。

為了方便起見,Ruby 中的陣列提供了 .first.last 方法,用於印出第一個和最後一個元素:

Data Types in Ruby 8

在 Ruby 中,陣列還有另一個有趣的功能。它可以同時容納不同類型的資料。例如,您可以儲存字串、符號,甚至是其他陣列:

Data Types in Ruby 9

步驟 6 – 符號

在 Ruby 中,symbol 是一種特殊的資料類型,其作用類似於標籤或識別碼。符號是不可變的,這意味著它們無法被修改。符號看起來就像是在宣告沒有任何值的變變數。

以下是符號的範例:

通常,符號用於識別重要的事物。然而,在其他情況下,字串就綽綽有餘了。

Ruby 作為一種物件導向語言,將所有事物都視為物件(包括字串),並具有其獨特的記憶體位置,即使字串內容完全相同也是如此。然而,當您引用一個符號時,它在程式中的任何地方都是同一個物件,指向同一個記憶體位置。

步驟 7 – 雜湊

雜湊(Hash)是鍵和值的類字典集合。雜湊通常用於儲存相關數據,例如使用者的資訊。

以下是雜湊的簡短範例。我們建立了一個雜湊 user_info ,其中包含使用者的使用者名稱和密碼:

Data Types in Ruby hashing in ruby

要檢索鍵值對的值,我們必須使用該鍵。以下範例示範了此過程:

Data Types in Ruby retrieve value using key

Ruby 還允許使用稍微不同的語法來定義雜湊( : 以代替 =>):

Data Types in Ruby retrieving value using key

此語法結構類似於其他語言中使用的語法,例如 JavaScript。在這種語法結構中,鍵被定義為符號。這就是為什麼我們不使用 "username",而是使用: username 來存取該值。

動態型別

您可能已經注意到,在宣告變數時,我們不需要明確指定資料類型。相反地,變數的值決定了其資料類型。Ruby 使用 dynamic typing,其中型別檢查是在執行期(runtime)進行的。相反地,在 static typing 程式語言(例如 C/C++)中,資料類型是在編譯期間確定的。

在以下範例中,指派給變數 dyn_var 的所有值都是有效的:

在動態型別語言中,我們可以自由地重複使用現有的變數來儲存不同的資料類型。在這裡,我們更新了前面的範例來示範這種現象:

dynamically typed variables

如本例所示,每次指派新值時,它都會隨之改變 dyn_var 的資料類型。這在將一種資料類型轉換為另一種資料類型時非常有用。以下範例示範了這一點:

get input and cast

在這裡,

  • 因為鍵盤輸入是字串,所以 length 起初是一個字串。

  • 由於我們期望的值是浮點數,因此我們使用 to_f 方法將字串值轉換為浮點數。

  • 由於值的改變, length 被指派了浮點數資料類型。這就是我們在螢幕上列印其值時所看到的。

如果我們嘗試將兩種不同的資料類型混合在一起會發生什麼事?Ruby 將會拋出錯誤。請看:

mixing two datatypes

資料類型識別

在 Ruby 中,一切都被視為物件。Ruby 中的每個物件都帶有方法 class。當被呼叫時,此方法會指出來源的資料類型。以下是一些使用 class 方法:

get classes name

另一種辨識資料類型的方法是使用 kind_of? 方法。它會根據要求的資料類型檢查物件的資料類型,並傳回布林值。請參考以下範例:

check datatype

同樣地,還有另一個方法 is_a?,它會比較資料類型並傳回布林值。唯一的差別在於方法的名稱。然而,它可能更受歡迎,因為對開發人員來說,它稍微更容易閱讀和理解。請使用 更新先前的範例is_a?:

check datatype

結語

使用任何程式語言都需要對其支援的資料類型有深入的了解。在本指南中,我們探索了 Ruby 程式設計中最常用的資料類型。我們討論並示範了整數、浮點數、字串、符號、布林值和雜湊(附範例)。

看看我們部落格中更多能幫助您探索 Ruby 的教學課程:

祝您運算愉快!

author

Preslav Dobrev

作者 · CloudSigma

Preslav Dobrev 是 CloudSigma 的創意設計師,專注於透過傳統與創新行銷渠道建立一致的企業形象。他擅長將藝術願景與策略行銷相融合,創造具有影響力的品牌敘事。

留言

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