09 Ruby 標誌物件
阿新 • • 發佈:2020-06-25
本章節我們要介紹一種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 大小寫轉換
這個方法和字串一樣使用downcase
和upcase
。
> :abc.upcase
=> :ABC
> :ABC.downcase
=> :abc
4.3 獲取標誌的長度
使用length
或者size
。
> :hello.length
=> 5
> :hello.size
=> 5
4.4 empty?
判斷 Symbol 物件是否為空字串。
> :"".empty?
=> true
5. 小結
本章中我們學習了什麼是標誌物件,在表示方法和例項變數名稱、雜湊 key 值、超程式設計傳參中使用標誌物件。標誌更像字串擁有字串的部分方法,如何和字串轉換。