美文网首页
Dart中的函数-----下

Dart中的函数-----下

作者: 二猪哥 | 来源:发表于2019-08-20 16:19 被阅读0次

    箭头函数

    • 需求:使用forEach打印下面List里面的数据
        List list=['苹果','香蕉','西瓜'];
    
    第一种方式
        list.forEach((value){
          print(value);
        });
    
    第二种方式---箭头函数:
    实现方式1:
        list.forEach((value)=>print(value));
    
    实现方式2:
        list.forEach((value)=>{
          print(value)
        });
    
    打印结果:
    苹果
    香蕉
    西瓜
    
    • 需求:修改下面List里面的数据,让数组中大于2的值乘以2
        List list=[4,1,2,3,4];
    
    第一种方式:
        var newList=list.map((value){
            if(value>2){
              return value*2;
            }
            return value;
        });
        print(newList.toList());
    
    第二种方式---箭头函数:
       var newList=list.map((value)=>value > 2 ? value * 2 : value);
       print(newList.toList());
    
    打印结果:
    [8, 1, 2, 6, 8]
    

    函数的相互调用

    • 需求:
      1、定义一个方法isEvenNumber来判断一个数是否是偶数
      2、定义一个方法打印1-n以内的所有偶数
    1、定义一个方法isEvenNumber来判断一个数是否是偶数 
    
    第一种方式:
        bool isEvenNumber(int n){
          if(n%2==0){
            return true;
          }
          return false;
        }
    第二种方式:
    bool isEvenNumber(int n) =>n%2 == 0 ? true : false;
    
    
        printNum(int n){
            for(var i=1;i<=n;i++){
                if(isEvenNumber(i)){
                  print(i);
                }
            }
        } 
    printNum(10);  
    
    打印结果:2 4 6 8 10
    

    匿名方法

    无参
      var printNum = (){
        print(123);
      };
      printNum();     //123
    
    
    有参
      var printNum = (int n){
        print(n+2);
      };
      printNum(12);   //14
    

    自执行方法

    一运行就执行,不需要手动调用。

        ((int n){
          print(n);    //12
          print('我是自执行方法');   //我是自执行方法
        })(12);
    

    方法的递归

     var sum=1;         
      fn(n){
        sum*=n;
        if(n==1){
          return ;
        }         
        fn(n-1);    
      }
      fn(5);      
      print(sum);
    

    闭包

    1、全局变量特点: 全局变量常驻内存、全局变量污染全局
    2、局部变量的特点: 不常驻内存会被垃圾机制回收、不会污染全局

    想实现的功能:
    1.常驻内存
    2.不污染全局
    因此产生了闭包,闭包可以解决这个问题.....

    闭包: 函数嵌套函数, 内部函数会调用外部函数的变量或参数, 变量或参数不会被系统回收(不会释放内存)。

    闭包的写法: 函数嵌套函数,并return 里面的函数,这样就形成了闭包。

      fn(){
        var a=123;  /*不会污染全局   常驻内存*/
        return(){           
          a++;          
          print(a);
        };        
       }     
       var b=fn();  
        b(); //124
        b(); //125
        b(); //126
    

    相关文章

      网友评论

          本文标题:Dart中的函数-----下

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