Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 无法理解此颤振关闭功能代码? var回调=[]; 对于(变量i=0;iprint(i)); } forEach((c)=>c());_Flutter_Loops_Dart - Fatal编程技术网

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

我不明白两件事:

  • print(i)是返回类型Void,编译器不应该显示“error”,因为print(i)的工作是将项目打印到控制台,而不是返回某些内容

  • 在“callbacks.forEach((c)=>c());”行中,为什么c()成为一个函数,因为它是lambda函数中获取值的一个参数

  • 代码的链接: 在for循环下

    PS:我是这个语法的初学者,所以非常感谢你们的帮助

    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());