iT邦幫忙

2023 iThome 鐵人賽

DAY 20
0
Software Development

從餐飲業轉職成小白工程師的所見所學系列 第 20

Ruby 裡 Symbol 與 String 的差別? Day 20

  • 分享至 

  • xImage
  •  

在Ruby中,Symbol和String是兩種不同的數據類型,它們之間有一些重要的區別:

不可變性:

Symbol 是不可變的,一旦創建,它的值不能被修改。每個Symbol都是唯一的。這使得Symbol非常適合用作哈希表的鍵,因為它們的比較速度非常快。
String 是可變的,你可以更改String的內容。這代表我們可以通過修改String的字符來改變它的值。String物件在修改時會創建新的實例,因此它們不具有Symbol那種唯一性。

內存使用:

由於Symbol的不可變性和唯一性,它們在內存中只有一個實例。如果你在代碼中多次使用相同的Symbol,實際上只有一個Symbol物件。這可以節省內存。
String物件在每次修改時都會創建一個新的實例,因此如果我們有多個相同的字符串,它們會佔用不同的內存空間。

用途:

Symbol 通常用於表示某種標識或名稱,例如 : 方法名、哈希鍵、枚舉值等。它們在程式中作為不可變的常數使用。
String 用於表示文本和字符數據。你可以對文本進行各種操作,例如 : 拆分、連接、修改等。

比較示例:

# 使用 string 宣告一樣的字串但記憶體位置不同。
# 使用 symbol 宣告一樣的符號,會指向同一個記憶體位置。
name1 = 'dojo'.object_id; # 60
name2 = 'dojo'.object_id; # 80

symbol1 = :dojo.object_id # 1199388
symbol2 = :dojo.object_id # 1199388

總之,Symbol和String在Ruby中有不同的用途和性質。選擇使用哪種取決於需求,如果需要一個不可變且唯一的標識符,那麼Symbol是更好的選擇,如果你需要處理文本和字符數據,那麼String更適合。


上一篇
cookie 跟 session 的差別? Day19
下一篇
CAP 定理? Day21
系列文
從餐飲業轉職成小白工程師的所見所學30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言