字符串(String類)與符號(Symbol)這兩種變量類型的特點和區別:
字符串和符號,都是Ruby中表示文本的方式
不管字符串變量也好,符號變量也好,都是用來表示文本的,它們之間,也可以互相轉換(通過to_sym和to_s):
"house".to_sym => :house
:house.to_s => "house"
相同的符號是一個對象,相同的字符并不一定是一個對象
這就是符號和字符串最大的差別,符號是不可變的,不能對一個符號進行修改。所以說,兩個看起來相同的符號一定是一個對象,但是說兩個看起來一樣的字符串是一個對象,就不對了。
這里,我們用 equal? 方法檢驗這一點,當兩個對象相同時,equal? 返回true,反之是false:
:house.equal?(:house) => true
"house".equal?("house") => false
-
處理符號相比字符串,占用更少的資源
比較典型的用法,就是在Rails中,用符號來指代散列中的參數名稱:<% for book in @books-%> <%= link_to book.name, :controller => "book", :action => "show", :id => book.id %> <% end -%>