你如何创建一个for循环
for (int x=0; x<data.length; x+=2)
Run Code Online (Sandbox Code Playgroud)
在红宝石?我想迭代一个数组,但我的计数器增加了两个而不是一个.
Joh*_*ter 27
如果您真正想要的是一次从数组中使用2个项目,请查看each_slice.
[1,2,3,4,5,6,7,8,9].each_slice(2) do |a, b|
puts "#{a}, #{b}"
end
# result
1, 2
3, 4
5, 6
7, 8
9,
Run Code Online (Sandbox Code Playgroud)
Rubystep是你的朋友:
0.step(data.length, 2).to_a
=> [0, 2, 4, 6]
Run Code Online (Sandbox Code Playgroud)
我to_a用来显示这将返回什么值。在现实生活中step是一个 enumerator,所以我们会像这样使用它:
data = [0, 1, 2, 3, 4, 5]
0.step(data.length, 2).each do |i|
puts data[i]
end
Run Code Online (Sandbox Code Playgroud)
哪些输出:
0
2
4
<== a nil
Run Code Online (Sandbox Code Playgroud)
请注意data包含六个元素,因此data.length返回6,但数组是零偏移量,因此最后一个元素将是元素 #5。我们只得到三个值,加上一个 nil,它在打印时会显示为一个空行,这将是元素 #6:
data[6]
=> nil
Run Code Online (Sandbox Code Playgroud)
这就是为什么我们通常不在 Ruby 中使用外部迭代器遍历数组和容器的原因;最后太容易掉线了。相反,使用each和类似的结构,它们总是做正确的事情。
要继续使用step和处理数组和容器的零偏移量,您可以使用:
0.step(data.length - 1, 2)
Run Code Online (Sandbox Code Playgroud)
但我仍然会尝试使用each和其他数组迭代器作为第一选择,@SergioTulentsev 以@SergioTulentsev 为例。
| 归档时间: |
|
| 查看次数: |
8422 次 |
| 最近记录: |