ruby - Ruby 中的字符串是可变的吗?

标签 ruby string immutability mutable

<分区>

考虑以下代码:

$ 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)

似乎可以在不创建新字符串的情况下更改单个字符。然而,附加到字符串显然会创建一个新字符串。

Ruby 中的字符串是可变的吗?

最佳答案

是的,与 Python 不同,Ruby 中的字符串是可变的。

s += "hello" 附加"hello"s - 创建了一个全新的字符串对象。要“就地”附加到字符串,请使用 << ,例如:

s = "hello"
s << "   world"
s # hello world

关于ruby - Ruby 中的字符串是可变的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8580304/

相关文章:

Javascript IF 与 OR 一起使用

PHP 速度 - 许多 echo 与构建字符串

c - strpbrk 的行为不符合预期

arrays - `+=` block 内的 `<<` 和 `each_with_object` 之间的区别

java - 具有可变对象 Java 的不可变数组

ruby-on-rails - Capistrano & Bash : ignore command exit status

iphone - 防止 HTTP 客户端访问带有缓存的服务器 (iphone)

java - 使用 Guava 不可变集合作为方法参数和/或返回类型

ruby - 将哈希数组的数组转换为哈希数组

ruby - 是否有具有方法#to_str 的Ruby 内置类或模块(String 除外)?