加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在Ruby中替换for循环?

发布时间:2020-12-16 19:15:42 所属栏目:百科 来源:网络整理
导读:在 Ruby中,使用for循环是一种糟糕的风格.这通常被理解. 推荐给我的风格指南: ( https://github.com/bbatsov/ruby-style-guide#source-code-layout) 说: “永远不要使用,除非你确切知道为什么.大部分时间都应该使用迭代器.for是按每个方式实现的(所以你要添
在 Ruby中,使用for循环是一种糟糕的风格.这通常被理解.
推荐给我的风格指南:
( https://github.com/bbatsov/ruby-style-guide#source-code-layout)
说:

“永远不要使用,除非你确切知道为什么.大部分时间都应该使用迭代器.for是按每个方式实现的(所以你要添加一个间接级别),但有一个扭曲 – 因为没有介绍新的范围(与每个范围不同)和在其区块中定义的变量将在其外部可见.“

给出的例子是:

arr = [1,2,3]

#bad
for elem in arr do
  puts elem
end

# good
arr.each { |elem| puts elem }

我已经研究过,我找不到关于如何模拟一个for循环的解释,该循环提供了一个迭代值,我可以传递给场所或执行算术运算.
例如,我将替换什么:

for i in 0...size do
  puts array1[i]
  puts array2[size-1 - i]
  puts i % 2
end

如果它是一个阵列很容易,但我经常需要当前位置用于其他目的.
有一个我缺少的简单解决方案,或者需要的情况.另外,我听到人们谈论好像永远不需要它.那么他们的解决方案是什么呢?

可以改进吗?什么是解决方案,如果有的话?谢谢.

解决方法

如果要迭代集合并跟踪索引,请使用 each_with_index
fields = ["name","age","height"]

fields.each_with_index do |field,i|
  puts "#{i}. #{field}" # 0. name,1. age,2. height
end

你在0 …大小的例子变成:

array1.each_with_index do |item,i|
  puts item
  puts array2[size-1 - i]
  puts i % 2
end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读