颤振存档插件飞镖用于循环结束条件



使用 DART,我有一个这样的 for 循环:

void fl(){
for(final file in archive){
print(file.name);
}
}

for 循环如何让我知道它何时完成?例如,我想在循环完成后运行一个函数。

void fl(){
for(final file in archive){
print(file.name);
}
//forloop done
//do function();
}

使用标准的for(i=0;i<archive.length();i++)想法,我可以检查 i 是 archive.length 的长度为 -1,但对于final file in archive版本,我被难住了。

以下类型的 for 循环也可以称为 foreach 循环,并且可以用于实现 Iterable 的对象:

for(final file in archive){
print(file.name);
}

可迭代意味着我们要求按顺序访问类,因此我们可以通过使用 foreach 符号而不是使用带有计数器的传统 for 循环来自动遍历每个元素。

对于在foreach循环中处理的每个元素,final file变量将被设置为archive的值。在您的示例中,这意味着我们最终会打印存档中每个文件的文件名。

当归档对象中的所有元素都处理完毕后,foreach 循环将停止,您将在循环后自动继续执行代码。因此,以下代码将按预期工作:

void fl(){
for(final file in archive){
print(file.name);
}
//forloop done
//do function();
}

因此,我不确定是否真的是你的问题?如果需要,您实际上可以对 Archive 类的对象使用传统的 for 循环,因为 Archive 既实现了[]又实现了length[1]:

void fl(){
for(var i = 0; i < archive.length; i++){
print(archive[i].name);
}
//forloop done
//do function();
}

[1] https://github.com/brendan-duncan/archive/blob/master/lib/src/archive.dart

最新更新