1. 程式人生 > Ruby 程式語言入門 >09 Ruby 標誌物件

09 Ruby 標誌物件

本章節我們要介紹一種Ruby獨有的標誌物件(Symbol),瞭解標誌物件的定義方式以及儲存機制,瞭解標誌物件與字串物件的區別以及一些常用的例項方法。

1. 什麼是標誌物件

標誌是 Symbol 類的唯一例項,通常用於標識特定資源。標誌是唯一的,因為在執行的程式中只能為特定標誌建立 Symbol 類的一個例項。從特點上來講,它更像一個字串。

例項:

> :hello.object_id 
=> 1277788

> :hello.object_id 
=> 1277788

解釋:在這裡,我們可以看到:hello符號僅建立一次,因為兩次呼叫:hello.object_id

返回相同的物件識別符號。

而字串則不同,即使字串的內容一樣,他在被呼叫的時候也會建立一個新的 String 物件。

例項:

> 'hello'.object_id 
=> 70300743069360

>'hello'.object_id 
=> 70300743056220

2. 如何建立標誌物件

我們在需要建立的內容之前加上一個冒號:即可建立一個 Symbol 物件。

例項:

> :ruby
=> :ruby

:ruby.class
=> Symbol

注意事項:一定要是字母開頭,數字不能在最前面。

3. 何時會用到標誌物件

3.1 表示方法和例項變數的名稱

例項:

attr_reader :title

attr_reader之後的:title是代表@title例項變數的符號。這塊您將會在Ruby類的建立一章學習到。

3.2 作為雜湊的key

例項:

hash = {a: 1, b: 2, c: 3}

雜湊的概念我們會在Ruby雜湊章節中學習。

3.3 超程式設計中傳遞引數

符號可用於超程式設計(Metaprogramming)方法中,例如send

例項:

[1,2,3].send(:first)

超程式設計會在進階時候為您解答。

4. 標誌型別的例項方法

注意事項:標誌型別僅擁有少量的字串型別的方法而且無法更改,如果需要對標誌的內容進行操作需要把標誌轉換成字串。

4.1 轉換成字串

您可以使用to_s方法執行此操作。

例項:

> :message.to_s
=> "message"

同樣您也可以使用to_sym方法將字串轉換成Symbol型別,Symbol也擁有這個方法,這個返回值的方法是它本身。

例項:

> "message".to_sym
=> :message

4.2 大小寫轉換

這個方法和字串一樣使用downcaseupcase

> :abc.upcase
=> :ABC
> :ABC.downcase
=> :abc

4.3 獲取標誌的長度

使用length或者size

> :hello.length
=> 5
> :hello.size
=> 5

4.4 empty?

判斷 Symbol 物件是否為空字串。

> :"".empty?
=> true

5. 小結

本章中我們學習了什麼是標誌物件,在表示方法和例項變數名稱、雜湊 key 值、超程式設計傳參中使用標誌物件。標誌更像字串擁有字串的部分方法,如何和字串轉換。