【发布时间】:2013-09-02 04:02:02
【问题描述】:
有没有办法不从循环的开头开始获取循环中的下一个元素?
我知道next 允许迭代到下一个元素,但它从循环的开头开始。我想获取下一个元素并继续循环中的下一条语句。
我正在解析一个结构如下的文本文件:
element 1
part 1
part 2
element 2
part 1
part 2
请注意,每个元素有 11 个部分,因此这只是一个示例。此外,有时在解析过程中会删除一些行,所以我认为我不能为每次循环迭代推进固定数量的元素。
我将所有文本读入一个数组,然后我想使用以下内容处理每一行:
text.each do |L|
#if L is new element create object to store data
#parse next line store as part 1
#parse next line store as part 2
end
我知道如何使用 while 循环和类似 C 的编码风格来执行此操作,在这种编码风格中,我显式索引到数组中,并将索引变量每次增加我想要的数量,但我想知道是否有一种 Ruby 方式来做到这一点。类似于 next 的东西,但它会从循环中的同一点继续,只是使用下一个元素,而不是从循环的开头开始。
编辑:
这是一个简化的示例,说明我如何使用 while 循环解决此问题:
text = ["a", "b", "c", " ", " ", "d", "e", "f"]
i = 0
while i < text.length do
if text[i] == " " then
i += 1
else
a = text[i]
b = text[i+1]
c = text[i+2]
puts a + b + c
i += 3
end
end
请注意,我正在编写的实际代码更复杂。我试图在这里提出一个最简单的例子来说明我想要做什么。
【问题讨论】:
-
可能你可以给出一个数组并通过演示该数组来提出问题..
-
我不清楚您要解决的确切问题。也许您可以提供 Ruby 或 C 中的
while版本来演示? -
@Confusion 我也很困惑.. :)
-
对不起,这个问题令人困惑。我会尽量澄清。
-
@confusion 或任何对帖子投反对票的人,请让我知道我的编辑是否有助于澄清它。谢谢。
标签: ruby