关于Ruby 1.8.7时发现,似乎有巨大区别的我在做一个循环连接字符串<<和+=一对String对象:
y = ""
start = Time.now
99999.times { |x| y += "some new string" }
puts "Time: #{Time.now - start}"
# Time: 31.56718
y=''
start = Time.now
99999.times { |x| y << "some new string" }
puts "Time: #{Time.now - start}"
# Time: 0.018256
Run Code Online (Sandbox Code Playgroud)
我谷歌了解一下,发现了一些结果:
http://www.rubylove.info/post/1038516765/difference-between-string-concatenation-ruby-rails
说<<修改两个字符串,而+=只修改调用者.我不明白为什么然后<<更快.
接下来我去了Ruby doc,但我想知道为什么没有方法 +=
Aje*_*i32 11
铲斗操作员的操作<<比+=处理长弦时要好得多,因为铲斗操作员可以修改原始弦,而+=每次操作时都必须将第一个弦中的所有文本复制到新的弦中.
+=String类上没有定义运算符,因为它+=是一个组合运算符.简而言之x += "asdf"就是完全相同x = x + "asdf",所以你应该+在字符串类上引用运算符,而不是查找+=运算符.
| 归档时间: |
|
| 查看次数: |
7296 次 |
| 最近记录: |