ruby 中的符號

2021-08-26 00:00:21 字數 973 閱讀 4578

1. "<<"

1) 建立乙個繫結到特定物件的class

a="my string"

class <> "book".to_sym

2.=> :book

3.>> :track.to_s

4.=> "track"

2. 相同的符號是乙個物件,相同的字元並不一定是乙個物件

這就是符號和字串最大的差別,符號是不可變的,不能對乙個符號進行修改。所以說,兩個看起來相同的符號一定是乙個物件,但是說兩個看起來一樣的字串是乙個物件,就不對了。

這裡,我們用 equal? 方法檢驗這一點,當兩個物件相同時,equal? 返回true,反之是false:

1.>> :book.equal?(:book)

2.=> true

3.>> "book".equal?("book")

4.=> false

處理符號相比字串,占用更少的資源

這也就是為什麼有些時候我們要使用符號的原因,由於字串變數必須具有各種修改其內容的功能,所以字串的維護和處理的開銷就很大,但是有些時候,我們並不需要修改和處理建立的文字資訊,這個時候用符號再好不過了。

比較典型的用法,就是在rails中,用符號來指代雜湊中的引數名稱:

1.<% for article in @articles -%>

2.<%= link_to article.title,

3.:controller => "article",

4.:action => "show",

5.:id => article.id %>

6.<% end -%>

反之,如果我們把 :controller 寫成"controller",把 :action 寫成"action",吧 :id 寫成"id",每乙個迴圈都要建立3個新的字元物件,但是我們又不需要對這些字串進行修改操作,白白新增了很多處理器開銷,而且寫成符號的形式更加簡練,可以更容易分別出引數和值,何樂而不為呢。

ruby 符號學習筆記

方法後面加個?可能 表示返回乙個boolean型別 方法後面加個!可能 表示會修改原來的物件內容,否則就是不改變原來的物件,只是複製乙份 變數前面加個 可能表示全域性變數 變數前面加個 表示例項變數 變數前面加個 表示類變數 begin here is comments comments again...

關於ruby中符號和字串的區別

今天在看 的時候看到,username的表示方式有一些不盡相同,因此產生疑問,上網上查詢了一下,有點收穫,記錄下來吧 1,符號和字串,都是ruby中表示文字的方式 他們之間是可以通過to sym 和 to s 之間來轉換的 username.to s username username to sym...

ruby中的模組

什麼是模組 模組 module 是ruby特有的功能之一。類用來表現具有資料與行為 程式 的 東西 而模組大致來說,則是只有程式部分的集合體。類與模組最大的不同在於 1.模組不能建立例項 2.模組不能繼承 模組的用法 1 提供命名空間 命名空間 namespace 是為了讓方法 常數 類名稱不互相衝...