Ruby中WITE_INDEX个WITH_INDEX之间的差异?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (19)

each.with_indexeach_with_index。他们看起来是不同的类型,但在实践中似乎是相同的。

提问于
用户回答回答于

each_with_index之前被引入Ruby。with_index后来被引入:

现在,with_index从通用性和可读性的角度来看,使用会更好,但是从加速代码的角度来看,each_with_index运行速度要稍快于each.with_index

当你觉得单一方法可以通过简单地链接几个方法而容易地表达时,通常情况是单一方法比链更快。

用户回答回答于

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

扫码关注云+社区