Ruby中的 replace跟 assign

第一次看到 replace這個 method的時候,我並不知道他的目的在哪裡,認為用 = 來 assign不是一樣的事情嗎?在ruby-lang的 IRC請教之後才知道兩者的差別在於 Object用 replace會 mutate,而 =只會將單一物件assign。

舉例來說:

a="this is A"
b=a

這時候 a物件是"this is A"的 string
b物件是"this is A"的 string"

這時候重新 assign A
a="A had been changed"
此時來檢視b,b物件依舊是 "this is A"的 string,不會因為 a重新 assign受到影響

但如果從一開始
a="this is A"
b=a
a.replace("A had been changed")
這時候檢查 b
b物件就會自動的連動變成"A had been changed"的string了

留言