在一个遍历一个范围的foreach循环中,我想(1)前进,并且(2)窥视该范围中的下一个元素而不前进。
import std.range: splitter;
import std.conv: parse;
foreach(numstr; line.splitter(',')) {
const int code = parse!int(numstr);
switch (code) {
case 1:
auto next1 = // currentRange.next()
// calling next() advances the range
auto next2 = // currentRange.next()
auto next3 = // currentRange.next()
// ...
case 2:
auto next1 = // currentRange.peek()
// calling peek() will not forward the range
currentRange.advanceBy(4);
// ...
// ...
}
}
((1)前进
您可以使用popFront
手动扩大范围,但我不建议将其与foreach
循环结合使用。也许用foreach
替换while (!range.empty)
?
((2)偷看范围中的下一个元素而没有前进]
为此,请提供一份副本:
range.save.dropOne.front
range.save.drop(4).front