Dart语言零基础学习笔记(九)

箭头函数

修改数组中的数据,让数组中大于3的值乘以2

void main() {

  List l = [1, 2, 3, 4, 5, 6];
  var newl = l.map((e) {
    if (e >= 3) {
      return e * 2;
    }
    return e;
  });
  print(newl);//(1, 2, 6, 8, 10, 12)
  print(newl.toList());//[1, 2, 6, 8, 10, 12]
}

使用箭头函数

void main() {
  List l = [1, 2, 3, 4, 5, 6];
  var newl = l.map((e) => e > 3 ? e * 2 : e); //e>3?e*2:e 三目函数   条件 ? 结果1 : 结果2
  print(newl);//(1, 2, 3, 8, 10, 12)
}

箭头函数遍历打印数组

void main() {
  List list = ['熊大', '熊二', 100, 1.1];
  // list.forEach((element) {
  //   print(element);
  // });

  list.forEach((element) => print(element));
}
// 熊大
// 熊二
// 100
// 1.1

函数的相互调用

1、定义方法一:使用isEveryNumber来判断一个数是否是偶数
2、定义方法二:打印1-n内所有的偶数

bool isEveryNumber(int n) {
  if (n % 2 == 0) {
    return true;
  } else {
    return false;
  }
}

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

void main() {
  printNum(10);
}
// 2
// 4
// 6
// 8
// 10

匿名方法

匿名方法(Anonymous methods)匿名方法是没有名称只有主体的方法。
在匿名方法中您不需要指定返回类型,它是从方法主体内的 return 语句推断的。提供了一种传递代码块作为委托参数的技术。
匿名方法使用场景

  1. 需要一个临时方法,该方法使用次数极少;
  2. 这个方法的代码很短,甚至可能比方法声明都短。
void main() {
  var printNum = () {
    //将匿名方法直接赋给变量printNum
    print('100');
  };
  printNum();
  var num = (int n) {
    return n * 2;
  };
  print(num(20));
}

//100
//40

自执行方法

自执行函数,即定义和调用合为一体。
外部无法引用它内部的变量,因此在执行完后很快就会被释放,关键是这种机制不会污染全局对象。

void main(){

((){
  print("this is 自执行方法");
})();this is 自执行方法
 
 
((int n){
    print(n);
  })(10000);//10000

}

方法的递归

方法自己调用自己

void main(List<String> args) {
  var sum = 1;
  fn(int n) {
  
    if (n == 1) {return sum; }//结束条件
    
    sum *= n;
    fn(n - 1); //递归   一个方法可以调用自身
  }

  fn(5);//sum=1*2*3*4*5
  print(sum);///120
}



通过方法的递归 求1-100的和

void main(List<String> args) {
  var sum = 0;
  fn(int n) {
    sum += n;
    if (n == 0) {
      return sum;
    }
    fn(n - 1);
  }
 fn(100);
  print(sum);//5050
}

闭包

闭包就是能够读取其他函数内部变量的函数。只有函数内部的子函数才能读取局部变量,所以闭包可以理解成“定义在一个函数内部的函数“。在本质上,闭包是将函数内部和函数外部连接起来的桥梁。
闭包是一个方法(对象)
闭包定义在其他方法内部
闭包能够访问外部方法内的局部变量,并持有其状态(这是闭包最大的作用,可以通过闭包的方式,将其暴露出去,提供给外部访问)

**闭包的写法:**方法嵌套方法,并且return里面的方法。

void main(List<String> args) {
  fn() {
    var a = 100;
    return () {
      a++;
      print(a);
    };
  }

  var b = fn();
  b();//101
  b();//102
  b();//103
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值