Dart中的函数-----下

箭头函数

  • 需求:使用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
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,903评论 1 32
  • 函数和对象 1、函数 1.1 函数概述 函数对于任何一门语言来说都是核心的概念。通过函数可以封装任意多条语句,而且...
    道无虚阅读 10,206评论 0 5
  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 8,043评论 2 9
  • PNG 有PNG8和truecolor PNG PNG8类似GIF颜色上限为256,文件小,支持alpha透明度,...
    hudaren阅读 5,656评论 0 0
  • 一、众多好马,为何选择成都双遗马? 面对马拉松进入井喷新时代,有太多、太好的马可骑,为何偏偏选了成都双遗马?仅仅是...
    在路上CQ阅读 3,587评论 0 1

友情链接更多精彩内容