繁体   English   中英

Ruby中each.with_index和each_with_index之间的区别?

[英]difference between each.with_index and each_with_index in Ruby?

我真的很困惑each.with_indexeach_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

each_with_index被引入Ruby。 with_index稍后介绍:

  1. 允许更广泛地使用各种调查员。
  2. 允许索引从0以外的数字开始。

今天,从通用性和可读性的角度来看,使用with_index会更好,但从加速代码的角度来看, each_with_index运行速度比each.with_index快一些。

当您认为通过简单链接几种方法可以轻松表达单个方法时,通常情况下单个方法比链更快。 至于另外一个例子, reverse_each运行速度比reverse.each 这些方法有理由存在。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM