"Hello" b = "Hello" #-6ren">
gpt4 book ai didi

ruby - String.new 和 Ruby 中的字符串文字有什么区别?

转载 作者:太空宇宙 更新时间:2023-11-03 17:14:21 24 4
gpt4 key购买 nike

我很难看出为 String 对象的新实例创建值的过程与为 String 文字创建值的过程有何不同。

a = String.new("Hello")
# => "Hello"

b = "Hello"
# => "Hello"

如果我跑

a == b
# => true

相同的值(value)观!怎么回事?

最佳答案

字符串文字是一个字符串对象。在早期版本的 Ruby 中没有区别。

从 Ruby 2.3 开始,您可以选择卡住字符串文字。这是 Ruby 3.0 中计划的默认设置

这意味着……

x = "Hello"
x.upcase!

...会产生错误,因为字符串是不可变的。

使用构造函数...

x = String.new("Hello")
x.upcase!

工作正常。

关于ruby - String.new 和 Ruby 中的字符串文字有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41602998/

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