gpt4 book ai didi

Ruby 字符串可变性

转载 作者:数据小太阳 更新时间:2023-10-29 06:50:18 29 4
gpt4 key购买 nike

这可能是一个有点菜鸟的问题,我最近一直在努力提高 ruby​​ 的水平,并开始阅读精彩的 The Ruby Programming Language .提到的一点是字符串文字被认为是可变的,因此在循环中最好使用变量然后使用文字,因为新字符串将在每次迭代时实例化。

我的问题是为什么?一开始以为是插值的原因,但是symbols是不可变的,支持插值。来自静态背景,这对我来说并没有多大意义。

编辑:

看完thenduks回答,我想我可能有。 AFAIK,像 Java 或 C# 这样的语言没有破坏性的字符串方法(它们使用大写,但不是大写!)。因为像 upcase 这样的东西!或 <<,字面量不能不可变。

对此不能 100% 确定,另一种可能性是它发生在编译时实习,而这在脚本语言中是不会发生的。

最佳答案

不太确定您的问题到底是什么,但请考虑以下代码:

10.times { puts "abc".object_id }

这会打印出 10 个不同的 ID。为什么?仅仅因为您知道此字符串不会更改并不意味着 Ruby 会更改。如果您认为 "abc" 应该只创建一次,那么如果您这样做会发生什么:

10.times { puts "abc".upcase! }

upcase! 方法将字符串变为大写,在下一次迭代中,在第一次迭代中创建的字符串不再相同。

也许发布一个让您感到困惑的代码示例?

关于Ruby 字符串可变性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/473450/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com