考虑下面的代码: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