在 Ruby 中使用 for 循环是不好的编程风格,这一点是广为人知的。一个给我推荐的编码风格指南(https://github.com/bbatsov/ruby-style-guide#source-code-layout)中指出:“除非你确切知道原因,否则从不使用 for 循环,大多数情况应该使用迭代器。for 循环是以 each 的形式实现的(因此它增加了一层间接性),但有一个扭曲之处——for 循环不引入新作用域(不像 each),在其块中定义的变量将在其外部可见。” 给出的示例是:
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
如果只是一个数组很容易,但我经常需要当前位置来完成其他操作。要么有一个我没想到的简单解决方案,要么就需要使用for循环。此外,我听到人们谈论for好像它从来不需要使用。那么他们的解决方案是什么呢?
是否可以改进呢?如果有解决方案,请告诉我,谢谢。
array1
和array2
具有相同的大小,最好将其写为array2[-1-i]
,以避免计算size
。 - Borodin