Dart 中的函数(箭头函数、匿名方法、自执行方法、递归 、闭包)

箭头函数
箭头函数中只能写一句代码,不能写多句执行代码

箭头函数改写 forEach

List list = ['苹果', '香蕉', '西瓜'];

list.forEach((value) {
print(value);
});

list.forEach((value) => print(value));

list.forEach((value) => {print(value)});

箭头函数中的 map

List list = [4, 1, 2, 3, 4];

var newList = list.map((value) {
if (value > 2) {
return value * 2;
}
return value;
});
print(newList.toList());

var newList2 = list.map((value) => value > 2 ? value * 2 : value);
print(newList2.toList());

箭头函数判断是否为偶数

  bool isEvenNumber(int n) => n % 2 == 0 ? true : false;
  print(isEvenNumber(10));

匿名方法

var printNum = () {
print(1212123);
};
printNum();

var printNumAdd = (int n) {
print(n + 12);
};
printNumAdd(12);

自执行方法

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

方法的递归

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

  fn(5);
  print(sum);

 

闭包:

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

想实现的功能:

1.常驻内存
2.不污染全局

产生了闭包,闭包可以解决这个问题…..

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

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

全局变量

  var a = 123;
  fn() {
    a++;
    print(a);
  }

  fn();
  fn();
  fn();

局部变量

  printInfo() {
    var myNum = 123;
    myNum++;
    print(myNum);
  }

  printInfo();

  printInfo();
  printInfo();

闭包

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

  var b = fn();
  b();
  b();
  b();
THE END
喜欢就支持一下吧
点赞8 分享