如何窥视并在foreach循环中推进一个范围

问题描述 投票:0回答:1

在一个遍历一个范围的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);
                  // ...
        // ...
    }
}
d
1个回答
0
投票

((1)前进

您可以使用popFront手动扩大范围,但我不建议将其与foreach循环结合使用。也许用foreach替换while (!range.empty)

((2)偷看范围中的下一个元素而没有前进]

为此,请提供一份副本:

  • range.save.dropOne.front
  • range.save.drop(4).front
© www.soinside.com 2019 - 2024. All rights reserved.