我有一个代码,看起来像
value = +"#{x}/part" value << "/part2"
字符串我知道这个值会包含类似valueOfX/part/part2的东西,但我不明白为什么字符串前面有+。我试着搜索它,但搜索引擎不太能理解“字符串ruby前面的加号”是什么意思。我也试着在在线ruby repl中运行这个,当+被添加或不被添加时没有区别。所以问题是,为什么像这样有+是有用的?
valueOfX/part/part2
flseospp1#
如果字符串被冻结,则返回重复的可变字符串。如果字符串没有冻结,则返回字符串本身。来源:https://ruby-doc.org/core/String.html#method-i-2B-40所以在你的例子中,由于你的字符串没有被冻结,你的代码等价于:
value = "#{x}/part"
字符串
编辑:
正如@stefan在评论中解释的那样,在Ruby 2.x中,插值字符串被冻结为frozen_string_literal: true。所以value = +"#{x}/part"不等同于value = "#{x}/part"。Ruby 3不再是这种情况。
frozen_string_literal: true
value = +"#{x}/part"
1条答案
按热度按时间flseospp1#
如果字符串被冻结,则返回重复的可变字符串。
如果字符串没有冻结,则返回字符串本身。
来源:https://ruby-doc.org/core/String.html#method-i-2B-40
所以在你的例子中,由于你的字符串没有被冻结,你的代码等价于:
字符串
编辑:
正如@stefan在评论中解释的那样,在Ruby 2.x中,插值字符串被冻结为
frozen_string_literal: true
。所以value = +"#{x}/part"
不等同于value = "#{x}/part"
。Ruby 3不再是这种情况。