我真的很困惑each.with_index和之间的区别each_with_index.它们有不同的类型,但在实践中似乎完全相同.
bla*_*ide 154
该with_index方法采用可选参数来偏移起始索引.each_with_index做同样的事情,但没有可选的起始索引.
例如:
[:foo, :bar, :baz].each.with_index(2) do |value, index|
puts "#{index}: #{value}"
end
[:foo, :bar, :baz].each_with_index do |value, index|
puts "#{index}: #{value}"
end
Run Code Online (Sandbox Code Playgroud)
输出:
2: foo
3: bar
4: baz
0: foo
1: bar
2: baz
Run Code Online (Sandbox Code Playgroud)
saw*_*awa 40
each_with_index之前被引入Ruby.with_index后来介绍:
0.今天,with_index从通用性和可读性的角度来看,使用会更好,但从加速代码的角度来看,each_with_index运行速度要快一些each.with_index.
当您认为通过简单链接几种方法可以轻松表达单个方法时,通常情况下单个方法比链更快.至于另一个例子,reverse_each运行速度比reverse.each.这些方法有理由存在.