gpt4 book ai didi

ruby - 在 Ruby 中构建字符串时,为什么铲子运算符 (<<) 优于加号 (+=)?

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

我正在通过 Ruby Koans 工作。

about_strings.rb 中的 test_the_shovel_operator_modifies_the_original_string Koan 包含以下注释:

Ruby programmers tend to favor the shovel operator (<<) over the plus equals operator (+=) when building up strings. Why?

我的猜测是它与速度有关,但我不明白会导致铲子运算符(operator)更快的引擎盖下的 Action 。

有人能解释一下这个偏好背后的细节吗?

最佳答案

证明:

a = 'foo'
a.object_id #=> 2154889340
a << 'bar'
a.object_id #=> 2154889340
a += 'quux'
a.object_id #=> 2154742560

所以 <<改变原始字符串而不是创建新字符串。原因是在 ruby​​ a += b 中是 a = a + b 的语法简写(其他 <op>= 运算符也是如此)这是一个赋值。另一方面<<concat() 的别名就地改变接收器。

关于ruby - 在 Ruby 中构建字符串时,为什么铲子运算符 (<<) 优于加号 (+=)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4684446/

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