Dart学习7、Dart方法详解(二)

箭头函数

1、使用forEach打印下面的List中的数据

void main(List<String> args) {
List list = ["AA", "BB", "CC"];
  list.forEach((element) {
    print(element);
  });
  //使用箭头函数
  //学过Kotlin的,有没有觉得像lambda表达式啊
  list.forEach((element) => print(element));
  list.forEach((element) => {print(element)});
}

2、修改下面List里面的数据,让数组中大于2的值*2

void main(List<String> args) {
  List list2 = [4, 1, 2, 3, 4];
  var newList = list2.map((e) {
      if (e > 2) {
        return e*2;
      }
      return e;
  });
   print(newList.toList());
  //通过箭头函数以及三目运算来实现
  var newList2 = list2.map((e) => e>2?e*2:e);
  print(newList2.toList());
}

函数的相互调用

void main(List<String> args) {
bool isEvenNumber(int n){
    if (n%2==0) {
      return true;
    }
    return false;
  }

  printNum(int n){
    for (var i = 1; i <= n; i++) {
      if (isEvenNumber(i)) {
        print(i);
      }
    }
  }
  printNum(10);
}

匿名方法

匿名方式的使用方式和传参方式和普通方法是一样的
void main(List<String> args) {
var printNum=(int n){
    print(n+2);
  };
  printNum(13);//15
}

自执行方法

程序一跑起来就会自动执行 不需要调用
void main(List<String> args) {
((int n){
    print(n);
    print("我是一个自执行方法");
  })(16);
}//这里的写法要记住哦,括号还是挺多的

方法的递归

void main(List<String> args) {
/其实就是方法自己调用自己
  //1、计算一个数的阶乘
  var sum = 1;
  fn(int n){
    sum *= n;
    if (n == 1) {
      return;
    }
    fn(n-1);
  }
  fn(5);
  print(sum); 
  //2、通过方法的递归求1-100的和
  var sum1 = 0;
  fnSum(int n){
    sum1 +=n;
    if (n==0) {
      return;
    }
    fnSum(n-1);
  }
  fnSum(100);
  print(sum1);//5050
}

闭包

 1、全局变量特点:全局变量常驻内存,全局变量污染全局
 2、局部变量的特点:不常住内存,会被垃圾回收机制回收、不会污染全局
 主要解决问题:
 	1、常驻内存
	2、不污染全局
	产生了闭包,闭包可以解决这个问题
 	闭包:函数嵌套函数,内部函数会调用外部函数的变量或者参数,变量或者参数不会系统回收
	闭包的写法:函数嵌套函数,并return里面的函数,这就形成了闭包
var a = 123;//全局变量,会常驻内存
void main(List<String> args) {
print(a);
  fn(){
    a++;
    print(a);//在fn方法也能调用到
  }
  fn();//123
  fn();//124
}

局部变量

void main(List<String> args) {
  printInfo(){
    var b = 123;//局部变量,只在该方法内有效
    b++;
    print(b);
  }
  printInfo();//124
  printInfo();//124
}

闭包

  fnaa(){
    var aa = 123;
    return(){
      aa++;
      print(aa);
    };
  }
  var bb = fnaa();//表示执行fnaa
  bb();//124
  bb();//125
  bb();//126
  //主要可以是变量常驻内存且不污染全局

记录Dart学习,谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JMchen123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值