如何解决为什么在 Ruby 中构建字符串时,铲子运算符 (<<) 优于加号 (+=)?
证明:
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 Koans 工作。
about_strings.rb*
中的test_the_shovel_operator_modifies_the_original_string
Koan包含以下注释: *
在构建字符串时,Ruby 程序员倾向于使用铲运算符 (<<) 而不是加号运算符 (+=)。为什么?
我的猜测是它涉及速度,但我不明白引擎盖下的动作会导致铲子操作员更快。
有人能解释一下这个偏好背后的细节吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。