我想要一种简单的方法来使用 D 来计算目录中的文件数量。
据我从 D 手册中可以看出,dirEntries 返回一个范围,但它没有长度属性。因此,我必须用计数器迭代结果,或者收集传统数组中的名称,我可以找到它的长度...有更好的方法吗?
auto txtFiles = dirEntries(".", "*.txt", SpanMode.shallow);
int i=0;
foreach (txtFile; txtFiles)
i++;
writeln(i, " files found..");
范围一般没有length
财产,除非它可以计算O(1)
。任何无法更好地计算其长度的范围O(n)
不会有length
财产,因为效率太低了。获取范围长度的惯用方法length
财产是用来std.range.walkLength http://dlang.org/phobos/std_range.html#walkLength。它用length
如果范围定义length
;否则,它只是迭代该范围并计算有多少个元素。
您还可以使用std.algorithm.count http://dlang.org/phobos/std_algorithm.html#count,但它的目的是计算与谓词匹配的元素的数量,并且虽然它默认返回返回的谓词true
对于每个元素,效率都低于walkLength
, 因为walkLength
在迭代元素时不会调用元素上的任何内容,并且它将使用length
相反,如果它已被定义,而count
永不。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)