关于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 次 |
最近记录: |