我想用一种简单的方法来计算目录中使用D的文件数.
据我在D手册中可以看出,dirEntries返回一个范围,但是它没有length属性.因此,我必须使用计数器迭代结果,或者收集传统数组中的名称,我可以找到它的长度......有更好的方法吗?
auto txtFiles = dirEntries(".", "*.txt", SpanMode.shallow);
int i=0;
foreach (txtFile; txtFiles)
i++;
writeln(i, " files found..");
Run Code Online (Sandbox Code Playgroud)
Jon*_*vis 15
范围通常没有length财产,除非可以计算O(1).任何无法计算其长度的范围都不会O(n)具有length属性,因为它效率太低.获得没有length属性的范围长度的惯用方法是使用std.range.walkLength.length如果范围定义length,它使用; 否则,它只是迭代范围并计算有多少元素.
你也可以使用std.algorithm.count,但是它用于计算与谓词匹配的元素的数量,虽然它默认为true对每个元素返回的谓词,但效率低于walkLength,因为walkLength它在迭代时不会调用元素上的任何内容length如果它已被定义,它将使用它,而count从不会.
您可以使用count从std.algorithm.
import std.algorithm, std.stdio, std.file;
void main() {
writeln(count(dirEntries(".", "*.txt", SpanMode.shallow)), " files found");
}
Run Code Online (Sandbox Code Playgroud)