Flutter 无法理解此颤振关闭功能代码? var回调=[]; 对于(变量i=0;iprint(i)); } forEach((c)=>c());
我不明白两件事:Flutter 无法理解此颤振关闭功能代码? var回调=[]; 对于(变量i=0;iprint(i)); } forEach((c)=>c());,flutter,loops,dart,Flutter,Loops,Dart,我不明白两件事: print(i)是返回类型Void,编译器不应该显示“error”,因为print(i)的工作是将项目打印到控制台,而不是返回某些内容 在“callbacks.forEach((c)=>c());”行中,为什么c()成为一个函数,因为它是lambda函数中获取值的一个参数 代码的链接: 在for循环下 PS:我是这个语法的初学者,所以非常感谢你们的帮助 var回调=[]; 对于(变量i=0;iprint(i)); } forEach((c)=>c()); 这里,()=>p
var回调=[];
对于(变量i=0;i<2;i++){
callbacks.add(()=>print(i));
}
forEach((c)=>c());
这里,()=>print(i)
是一个闭包,它不接受任何参数并返回void
。在循环中,将这些函数添加到回调
列表中
(c)=>c()
某些类型的安全性在这里可能会有所帮助,例如:
final callbacks=[];//看起来像()->void的函数的空列表
对于(变量i=0;i<2;i++){
最终void函数()回调=()=>print(i);
callbacks.add(callback);
}
forEach((void Function()callback)=>callback());
在本例中,由于callbacks
的类型为List
,因此传递给forEach
的函数的参数是void function()
,这意味着您可以使用c()
调用它,它是列表中始终存储的特定类型i的值,callbacks List-[print(0),print(1)],谢谢。
var callbacks = [];
for (var i = 0; i < 2; i++) {
callbacks.add(() => print(i));
}
callbacks.forEach((c) => c());