在
Ruby中,使用for循环是一种糟糕的风格.这通常被理解.
推荐给我的风格指南:
( https://github.com/bbatsov/ruby-style-guide#source-code-layout)
说:
推荐给我的风格指南:
( 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