迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 >

Ruby 中 each_with_index 和 each.with_index 的区别

作者:迹忆客 最近更新:2023/03/20 浏览次数:

本文将演示方法 each_with_index 的用法及其与 each.with_index 的区别。

Ruby 中的 each_with_index 方法

我们可能偶尔需要遍历一个数组并知道当前数组元素的索引。

以下是天真的 Ruby 程序员的例子:

array = (0..9).to_a
index = 0
array.each do |num|
    # do something
    index += 1
end

此代码有效,但不是很好。第一个问题是它增加了两行代码,更多的代码意味着更多的潜在错误。

第二个问题是 index 变量在执行后变成孤立的。如果下面的另一段代码使用相同的变量名,这可能会成为一个问题。

为了解决这个问题,Ruby 有一个名为 each_with_index 的方法,它允许我们在迭代时访问当前元素的索引。

array = ('a'..'e').to_a
array.each_with_index do |char, index|
    puts "#{index}: #{char}"
end

输出

0: a
1: b
2: c
3: d
4: e

each_with_index 比使用额外的变量来跟踪当前索引更优雅。它将迭代索引公开为块的第二个参数。

因此,我们不必手动增加索引或留下可能导致严重副作用的孤立变量。

Ruby 中的 each.with_index 方法

Ruby each.with_index 很方便。它接受一个允许索引从 0 以外的数字开始的值。

下面的代码使用 each_with_index 方法。

[1,2,3].each_with_index { |n, index| puts "index: #{index}" }
index: 0
index: 1
index: 2
=> [1, 2, 3]

我们可以使用 each.with_index 方法写出下面的同等代码。

[1,2,3].each.with_index(0) { |n, index| puts "index: #{index}" }
index: 0
index: 1
index: 2
=> [1, 2, 3]

要从 5 开始索引,使用 each.with_index 我们有,

[1,2,3].each.with_index(5) { |n, index| puts "index: #{index}" }
index: 5
index: 6
index: 7
=> [1, 2, 3]

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

用 Ruby 解析 XML

发布时间:2023/03/21 浏览次数:112 分类:编程语言

本文展示了如何在 Ruby 中使用 gem nokogiri 解析 XML 文件。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便