Dart 学习笔记 (四)函数

211 阅读1分钟

方法定义

类型 方法名() { return 返回值}

String getPerson(String name, int age) {
  return "name=$name,age=$age";
}

箭头函数:
getPerson(name, age) => "name=$name,age=$age";

方法特性

  1. 方法也是对象,并且有具体类型Function
  2. 返回值类型、参数类型都可省略
  3. 箭头语法:=> expr 是{return expr} 缩写,只适用于一个表达式
  4. 方法都有返回值。如果没有指定,默认return null 是返回值

可选参数 / 默认参数值

  1. 可选命名参数:{param1,param2,...}
  2. 可选位置参数:[params1,params2,...]
  3. 如果存在具体参数,可选参数声明,必须在参数后面
getPerson(String name, {age, gender}) {
  print("name=$name,age=$age,gender=$gender");
}

getPerson(String name, [age, gender]) {
  print("name=$name,age=$age,gender=$gender");
}

getPerson(String name, {age = 30, gender="男"}) {
  print("name=$name,age=$age,gender=$gender");
}

匿名方法

(参数1,参数2) {
   方法体...
   return 返回值
}

闭包

  1. 闭包是一个方法(对象)
  2. 闭包定义再其他方法内部
  3. 闭包能够访问外部方法内得局部变量,并持有其状态
void main() {
  var func = a();
  func();
  func();
}

a() {
  int count = 0;

  printCount() {
    print(count++);
  }

  return printCount;
}

a() {
  int count = 0;

  return () {
    print(count++);
  };
}