我在 Ruby 中看到了很多这样的事情:
myString = "Hello " << "there!"
这和做有什么不同
myString = "Hello " + "there!"
最佳答案
在 Ruby 中,字符串是可变的。也就是说,字符串值实际上可以更改,而不仅仅是替换为另一个对象。 x << y
实际上会将字符串 y 添加到 x,而 x + y
将创建一个新的字符串并返回它。
这可以在 ruby 解释器中简单地测试:
irb(main):001:0> x = "hello"
=> "hello"
irb(main):002:0> x << "there"
=> "hellothere"
irb(main):003:0> x
=> "hellothere"
irb(main):004:0> x + "there"
=> "hellotherethere"
irb(main):005:0> x
=> "hellothere"
值得注意的是,请参阅 x + "there"
返回“hellotherethere”,但返回 x
的值没有改变。小心可变字符串,它们会来咬你。大多数其他托管语言没有可变字符串。
另请注意,String 上的许多方法同时具有破坏性和非破坏性版本:x.upcase
将返回一个包含 x 的大写版本的新字符串,同时保留 x; x.upcase!
将返回大写的值 - 并 - 修改 x 指向的对象。
关于ruby - << 与 + 有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2075855/