4. Dart -方法/闭包

2021-03-06  本文已影响0人  Aliv丶Zz

Dart方法的格式:

返回类型 方法名称 (参数1, 参数2, ...){
 方法体
 return 返回值;
}

示例:

  int sumTest(int num1, int num2) {
    return num1 + num2;
  }
1. 嵌套方法作用域只能在外层函数中使用(与swift类似)
  void funcTest() {
    void hello() {
      print("hello world");
    }

    hello();
  }
2 可选参数
  String getUserInfo(String name, String sex, [int age, String address]) {
    return "${name} $sex $age  $address";
  }

  print(getUserInfo("张三", "男"));
  print(getUserInfo("张三", "男", 19));
  print(getUserInfo("张三", "男", 18, "上海"));

/*
张三 男 null  null
张三 男 19  null
张三 男 18  上海
*/
3 默认参数
  String getUserInfo(String name, String sex,
      [int age = 20, String address = "北京"]) {
    return "${name} $sex $age  $address";
  }

  print(getUserInfo("张三", "男"));
  print(getUserInfo("张三", "男", 19));
  print(getUserInfo("张三", "男", 18, "上海"));
/*
张三 男 20  北京
张三 男 19  北京
张三 男 18  上海
*/
4 命名参数
  //命名参数
  String getUserInfo2(String name, String sex, {int age = 20, String address}) {
    return "${name} $sex $age  $address";
  }

  print(getUserInfo2("张三", "男"));
  print(getUserInfo2("张三", "男", age: 19));
  print(getUserInfo2("张三", "男", age: 19, address: "上海"));

/*
张三 男 20  北京
张三 男 19  北京
张三 男 18  上海
*/
5. 箭头函数

箭头函数{}可以省略,切后面只能有一句代码

  var list = [1, 2, 3, 4];
  //原始
  list.forEach((element) {
    if (element >= 2) {
      print("$element >= 2");
    } else {
      print("$element < 2");
    }
  });
 
 // 箭头函数 + 三目运算符 ?:  省略{}
  list.forEach((element) =>
      (element >= 2) ? print("$element >= 2") : print("$element < 2"));
// 箭头函数 + if-else
  list.forEach((element) => {
        if (element >= 2) {print("$element >= 2")} else {print("$element < 2")}
      });
}
6. 匿名方法
 var testFn = (String a) {
    print(a);
  };
  testFn("hello World");

  //等价于 自执行方法

  (String a) {
    print(a);
  }("hello World 2");

7. 自执行方法
  // 自执行方法
  ((int a) {
    print(a);
  })(12);

Dart闭包

  Function(int a) fn() {
    var num = 1;
    return (int a) {
      num += a;
      print(num);
    };
  }

  var loadFn = fn();
  loadFn(1); //2
  loadFn(2); //4
  loadFn(4); //8
}
上一篇 下一篇

猜你喜欢

热点阅读