談 Ruby 程式語言中的符號 (Symbol) 及字串 (String) 前,先了解如何判斷符號,在字串 (String) 前加入 : (冒號) 即為符號 (如右顯示:name
:名稱
),特徵如下:
符號 (symbol):
- 就像身份證,具有唯一性 (ID) 的特徵,無法修改。
- 有名字的物件。
- 是一個值,不是變數。
字串 (String):
字串的內容可以任意修改。
上面看完有看沒懂嗎? 沒關係,翻譯蒟蒻:
把"符號"看成值(value)會更好理解
Ex: 我們會看成 age = 30 → “變數” = “值"
但不會看成 18 = 30,這是明顯的錯誤
所以符號也不會等於值 :ruby = 30,這是錯誤的
簡易測試如下:
1
2
3
4
5
6
7
8
9
10
11
12# 字串(String)每次印出"ruby"時,ID都會不同,佔用的記憶體位址也不同。
$ p "ruby".object_id => 70368649284780
$ p "ruby".object_id => 70368649357780
$ p "ruby".object_id => 70368649378300
$ p "ruby".object_id => 70368649452840
$ p "ruby".object_id => 70368649423920
# 符號(Symbol)每次印出 :ruby 時,具有唯一性,佔用記憶體位址相同。
$ p :ruby.object_id => 680348
$ p :ruby.object_id => 680348
$ p :ruby.object_id => 680348
$ p :ruby.object_id => 680348
# 從上得知,符號(Symbol)效能比字串(String)好。
題外話:
在 Ruby 世界中,除了 block 不是物件外,大部分的東西都屬於物件,符號 、字串、變數、文字、數字、 nil …等都是物件的一種。
小菜初學 Ruby,如有錯誤歡迎提出