我已經測試下面的代碼:奇怪的紅玉字符串連接行爲
irb(main):038:0> a=".";b="10"
=> "10"
irb(main):039:0> a+=b
=> ".10"
irb(main):040:0> a<<b
=> ".1010"
到目前爲止好。現在,讓我們重複這個過程:
irb(main):042:0> a+=b+="4"
=> ".104"
irb(main):044:0> a
=> ".104"
irb(main):043:0> b
=> "104"
好...現在代替+ =與< <
irb(main):045:0> a=".";b="10"
=> "10"
irb(main):046:0> a<<b<<"4"
=> ".104"
irb(main):047:0> a
=> ".104"
irb(main):048:0> b
=> "10"
如果< <代表+ =那麼爲什麼b爲仍爲10,而不是104?
謝謝!第二個例子非常好,但只要我給x(x =「new」)賦新值,old_x就不會更新,即使當我在x =「new」之後執行x <<「old」時 – 2015-02-08 19:42:53
什麼是「 x =「new」'是創建一個新的字符串'「new」',併爲其分配'x'。它不會更改用於分配的字符串「x」的值。這就是爲什麼'old_x'不會改變,因爲它仍然被分配給舊的字符串。 – 2015-02-09 04:58:39