迹忆客 专注技术分享

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

Ruby 中的 for 与 each

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

在 Ruby 中,你可以使用 Array#eachfor..in 来遍历数组。但是,两者之间存在显着差异。

Ruby 中的 Array#each

Ruby Array#each 方法是最直接且广泛使用的迭代数组中单个项目的方法。

each 是 Array 类的内置方法,它是最流行的迭代 Ruby 数组中项目的方法。

each 将块作为参数并返回当前项。

[1, 2, 3].each { |n| puts n }

输出:

1
2
3

Ruby 中的 for..in 循环

与大多数其他编程语言一样,Ruby 有一个用于循环数组的 for 语句。

for 后跟一个作为当前元素的变量和一个迭代数组。

for n in [1, 2, 3]
  puts n
end

输出:

1
2
3

在引擎盖下,Array#eachfor..in 几乎做同样的事情。但是,有一个微小的差异,可能会导致严重的问题。

[1, 2, 3].each { |n| n }
puts n

输出:

NameError (undefined local variable or method `n' for main:Object)

代码示例:

for n in [1, 2, 3]
 n
end
puts n

输出:

3

如果我们尝试在 Array#each 之后打印 n,我们会得到一个错误,但它会在 for 循环之后打印 3

这是怎么回事?

在执行 for..in 之前,变量 n 是预先定义的。块完成后,它在块外仍然可见。

换句话说,for 循环类似于:

n = nil
[1, 2, 3].each { |i| n = i }
puts n

输出:

3

Array#each 的情况下,变量 n 定义在块 { |n| puts n },因此它对块范围之外的任何东西都不可见。

使用 for 循环可能会引入额外的变量作为副作用,从而导致令人沮丧的问题。结果,Array#each isprefered 胜过 for..in

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

本文地址:

相关文章

用 Ruby 解析 XML

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

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

扫一扫阅读全部技术教程

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

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便