这可能是一个有点入门级的问题,我最近一直在努力提高自己的 Ruby 技能,开始阅读了精彩的《Ruby 编程语言》。其中提到的一件事是字符串字面量被认为是可变的,在循环中最好使用变量而不是字面量,因为在每次迭代中都会实例化一个新字符串。
我的问题是为什么?起初我认为这是由于插值,但符号是不可变的,它们支持插值。来自静态背景,对我来说这并没有太多意义。
编写:
阅读thenduks的答案后,我想我可能有了答案。据我所知,像Java或C#这样的语言没有破坏性的字符串方法(它们使用upcase,但不是upcase!)。由于存在像upcase!或<<这样的东西,文字不能是不可变的。
并不100%确定,另一个可能性是它是在编译时发生的内部化,这是在脚本语言中不会发生的事情。