Ruby 世界裡的字串與符號是什麼?

被端走的小菜
2 min readJul 29, 2019

--

初篇 Medium 文章獻給 Ruby,原本是想拿來紀錄學習歷程及心得,但僅僅是想法...尚未行動…

談 Ruby 程式語言中的符號 (Symbol) 及字串 (String) 前,先了解如何判斷符號,在字串 (String) 前加入 : (冒號) 即為符號 (如右顯示:name :名稱),特徵如下:

符號 (symbol):

1.就像身份證,具有唯一性 (ID) 的特徵,無法修改。

2.有名字的物件。

3.是一個值,不是變數。

字串 (String):

字串的內容可以任意修改。

上面看完有看沒懂嗎? 沒關係,翻譯蒟蒻:

把"符號"看成值(value)會更好理解,Ex:

我們會看成 age = 30 → “變數” = “值"

但不會看成 18 = 30,這是明顯的錯誤

所以符號也不會等於值 :ruby = 30,這是錯誤的

簡易測試如下:

# 字串(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,如有錯誤歡迎提出

本文章同步發表於小菜的 Blog https://riverye.com/

--

--

被端走的小菜
被端走的小菜

Written by 被端走的小菜

大家好,我是被端走的小菜。以個人部落格更新為主:https://riverye.com/

No responses yet