美文网首页
Flutter(三)初识Dart(中)

Flutter(三)初识Dart(中)

作者: 学_iOS | 来源:发表于2021-12-06 11:51 被阅读0次

感君一回顾,思君朝与暮。

<一>dart方法和箭头函数

  • dart中方法,方法也是一个对象。当方法的执行语句只有一句的时候,可以是由箭头函数=>表达式
    void main() => functionTest();
    void functionTest() {
      printString('functionTest');
    }
    
  • 方法的返回值和参数类型可以省略,sum方法和sum方法1是相同的
    int sum(int a, int b) {
      return a + b;
    }
    sum1(a , b) {
      return a + b;
    }
    

<二>dart方法中的可选参数

  • 可选参数:传递参数的时候必须带上形参的名字 我们在方法中添加可选参数时,用{}表示,并添加名字
    int sum2(int a,{int b = 0,int c = 0}) {
      // b ??= 0; //处理b,c为空的情况
      // c ??= 0;
      return (a + b + c);
    }
    
  • 调用
    printString(sum2(10,b: 20,c: 10));
    //输出的结果为 40
    

<三>dart中方法作为参数传递

  • 方法也是一个对象,可以赋值一个变量,我们可以直接调用这个变量,当方法有返回方法时
    var fun1 = fun();
    printString(fun1());
    //输出结果123
    
    fun() {
      return () => '123';
    }
    
  • 我们定义一个数组,打印里面的元素,类似我们iOS中的for循环和enumerateObjectsUsingBlock
    var list = ['1','2','3','4'];
    list.forEach((element) {
      printString(element);
    });
    for(var element in list) {
      printString(element);
    };
    list.forEach(printString);
    //输出结果均为 1 2 3 4
    
  • 我们把函数作为参数传递的话类似block闭包。list.forEach(print)中我们把print方法作为参数传递进去。
  • 我们也可以把匿名函数作为参数进行传递
    int b = 0;
    forEachDemo1(list, (var a) {
      b++;
      print('$b= $a=');
    });
    //输出
    // flutter: 1= 1= 
    // flutter: 2= 2=
    // flutter: 3= 3=
    // flutter: 4= 4=
    
    forEachDemo1(List list, void func(var element)) {
      for (var element in list) func (element);
    }
    

<四>dart方法中的闭包

  • 定义在函数里面的函数就是闭包,闭包也是一个对象
    var fun1 = fun();
    printString(fun1());
    printString(fun1());
    printString(fun1());
    //输出结果:0 1 2
    
    fun() {
      int count = 0;
      return () => count++;
    }
    

相关文章

网友评论

      本文标题:Flutter(三)初识Dart(中)

      本文链接:https://www.haomeiwen.com/subject/dzmgxrtx.html