Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
D 如何在foreach循环中查看和建议范围_D - Fatal编程技术网

D 如何在foreach循环中查看和建议范围

D 如何在foreach循环中查看和建议范围,d,D,在迭代一个范围的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 = //

在迭代一个范围的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
替换为
,而(!range.empty)

(2) 窥视范围内的下一个元素而不推进它

为此,请预付一份副本:

  • range.save.dropOne.front
  • range.save.drop(4).front
当然,拆分器必须为每次查看重新进行工作。要避免这种情况,请将其结果保存到数组中,或使用
split