Ruby - 如果要複製出一樣的物件變數應該怎麼做?

好久沒有寫這種類似的文章了呢XD

最近一直在寫自動化,但沒花甚麼時間去理解使用的語言

看來我依然是離不開這種學習方式呢XD 實在是很有趣

Ruby 是一個挺有趣的語言,這邊就不詳細介紹 因為其他文章以及他自己本身的 Document 就講了太多太多了

有興趣的可以到這裡

官方文件
https://www.ruby-lang.org/zh_tw/documentation/ruby-from-other-languages/

Ruby 也可這樣寫
https://kaochenlong.com/2014/10/16/happy-programming-ruby/

今天主要要紀錄的是變數和物件之間的差異

變數在這個萬物幾乎皆物件的世界裡,變數像是一個物件裡的"標籤 (Label)" 

從code來開始看吧

我宣告一個 A 為 "abc" (字串物件)

a = "abc"
b = a
a.upcase!
puts b

猜猜會輸出怎樣的b?

答案是出現 "ABC"

可以看得出來是 a 跟 b 同時指向了同一個物件,而導致了這樣的結果
那我們要如何知道是真的這樣的事情發生了呢?

可以使用object_id來確認這件事

所以...code 就變這樣

a = "abc"
b = a
a.upcase!
puts b

puts b.object_id
puts a.object_id

這時就可以發現他們兩個的 object_id 就會相同了
如果真的要用同一個物件時,就會建議使用 clone方法來做

所以應該要這樣

a = "abc"
b = a
a.upcase!
puts b

b = a.clone
b.downcase!

puts b
puts a

這樣子就不會影響到 a 的物件啦!!

小小筆記一下這個 避免以下不小心踩到這個雷ˊ_>ˋ