Ruby中的each.with_index和each_with_index之间的区别?
我真的很困惑each.with_index
和each_with_index
之间的区别。 他们有不同的types,但实际上似乎是相同的。
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
输出:
2: foo 3: bar 4: baz 0: foo 1: bar 2: baz
each_with_index
被引入Ruby。 with_index
稍后介绍:
- 以允许各种统计员更广泛的使用。
- 允许索引从
0
以外的数字开始。
今天,从通用性和可读性的angular度来看,使用with_index
会更好,但是从加速代码的angular度来看, each_with_index
比each.with_index
稍快。
当你觉得单一的方法可以通过简单的几个方法链接来expression,通常情况下,单一的方法比链更快。 至于另一个例子, reverse_each
运行速度比reverse.each
快。 这些方法有理由存在。