D语言循环计数器

Loop counter in D language

在本教程(http://ddili.org/ders/d.en/foreach_opapply.html)中,注释If foreach support is provided by range member functions, then a loop counter can be achieved simply by enumerate from the std.range module:并附有示例。

import std.range;

// ...

foreach (i, element; NumberRange(42, 47).enumerate) {
    writefln("%s: %s", i, element);
}

我尝试使用此示例来检查 enumerate,但出现错误 Error: no property 'enumerate' for type 'NumberRange'。可能出了什么问题?

import std.stdio;
import std.range;

void main()
{
    foreach (i, element; iota(42, 47).enumerate) {
        writefln("%s: %s", i, element);
    }
}

enumerate 是在 2.066 发布后添加的。它将在 2.067 中可用。

顺便说一句,您可能知道也可能不知道,但是您可以使用 std.range.iota 而不是 NumberRange。