美文网首页
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