考慮下面的代碼:Ruby中的字符串是否可變?
$ irb
> s = "asd"
> s.object_id # prints 2171223360
> s[0] = ?z # s is now "zsd"
> s.object_id # prints 2171223360 (same as before)
> s += "hello" # s is now "zsdhello"
> s.object_id # prints 2171224560 (now it's different)
好像單個字符是可以改變的W/O創建一個新的字符串。但是附加到字符串顯然會創建一個新的字符串。
是在Ruby中的字符串可變的?
是的,通過瑣碎的搜索交代。 http://stackoverflow.com/questions/2608493/why-did-matz-choose-to-make-strings-mutable-by-default-in-ruby – 2011-12-20 18:43:18
@DaveNewton:不是很好它是多麼容易在SO上尋找訣竅,因爲你幾乎可以依靠谷歌首先提出的SO話題? – 2011-12-20 18:45:15
'+'連接並將返回一個新的字符串。 '<<'正在附加,並將附加到給定的字符串對象(不會創建一個新對象)。 – Chad 2011-12-20 18:45:43