第一次看到 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了
舉例來說:
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了
留言
張貼留言