Dart 8-Day

箭头函数

  • 注意:箭头函数只能写一行代码
// forEach 打印List

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

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

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

  list.forEach((value) => {print(value)});
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());

函数调用

/**
   * @description: 判断一个数是否是偶数
   * @param {type}
   * @return:
   */
  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);
int getNum(int n) {
  return n;
}

// 在main方法中调用
void main() {
  print(getNum(12));
}

匿名方法

// 示例一
  var printNum=(){
    print(123);
  };
  printNum();

// 示例二
  var printNum = (int n) {
    print(n + 2);
  };
  printNum(12);

自执行方法

  • ((){})() 这种格式的,匿名方法加外层加个小括号,后边在加小括号运行,就是自执行方法
((int n) {
    print(n);
    print('我是自执行方法');
  })(12);

递归

  • 原理就是自己调用自己,在合适的时机停止
// 示例一

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

// 示例二 求1到100的和

  var sum = 0;
  fn(int n) {
    sum += n;
    if (n == 0) {
      return;
    }
    fn(n - 1);
  }
  fn(100);
  print(sum); // 5050

闭包

  • 全局变量特点: 全局变量常驻内存、全局变量污染全局

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

  • 想实现的功能:

    • 常驻内存
    • 不污染全局
  • 产生了闭包,闭包可以解决这个问题.....

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

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

/*全局变量*/
var a = 123;

void main() {
  print(a); // 123

  fn() {
    a++; // a为全局变量
    print(a);
  }

  fn(); // 124
  fn(); // 125
  fn(); // 126

// 局部变量
  printInfo() {
    var myNum = 123;
    myNum++;
    print(myNum);
  }
  printInfo(); // 124
  printInfo(); // 124
  printInfo(); // 124
}
// 局部变量

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

  printInfo(); // 124
  printInfo(); // 124
  printInfo(); // 124
}
// 闭包

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

  var b = fn();
  b(); // 124
  b(); // 125
  b(); // 126
}

Notion – The all-in-one workspace for your notes, tasks, wikis, and databases.icon-default.png?t=M0H8https://serious-lose.notion.site/Dart-8-Day-e25ed2501ce84c05a61192f5d2dc49fb 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值