Dart基本语法学习四

190 阅读2分钟

#方法 ####方法定义

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

####方法特性

  • 方法也是对象,并且有具体类型Function
  • 返回值类型、参数类型都可省略
  • 箭头语法:=>expr 是{return expr;}缩写,只适用于一个表达式。
  • 方法都有返回值。如果没有指定,默认 return null 最后一句执行
void main(){
printPerson("张三",18);
print(personName("李四",20));
}
//
void printPerson(String name,int age){
  print("$name+$age");
}
//printPerson()等同于下边
//
printPerson(name,age){
print("$name+$age");
}
//箭头语法
personName(String name,int age) =>"$name+$age";

####可选参数

  • 可选命名参数:{param1,param2,......}
  • 可选位置参数:[param1,param2,......]
  • 如果存在具体参数,可选参数声明,必须在参数后面
void printPer(String name,{int age,String gender}){
  print("name = $name,aget = $age,gender = $gender");
}
void printPer2(String name,[int age,String gender]){
  print("name = $name,aget = $age,gender = $gender");
}

####默认参数

  • 使用 = 在可选参数指定默认值
  • 默认值只能是编译时常量
void printPer(String name,{int age = 30,String gender = "Female"}){
  print("name = $name,aget = $age,gender = $gender");
}

####方法对象

  • 方法可作为对象赋值给其他变量
  • 方法可作为参数传递给其他方法
void main(){
  var func = printPerson;
  func();
}
void printPerson(){
  print("张三");
}
//打印 张三
void main(){
  var list = ["h","e","l","l","o"];
  print(printList(list, printStr));
}
List printList(List list, String f(elment)){
  for (var i = 0;i<list.length;i++){
    list[i] = f(list[i]);
  }
  return list;
}
String printStr(str){
  return str * 3;//str 复制3次;
}

####匿名方法

(参数1,参数2){
    方法体...
    return 返回值
}
  • 可以赋值给变量,通过变量进行调用
  • 可在其他方法中直接调用或传递给其他方法
  print(printList(list, (str){return str*3;}));//同上,字符串复制3次;

####闭包

  • 闭包是一个方法(对象)
  • 闭包定义在其他方法内部
  • 闭包能够访问外部方法内的局部变量,并持有其状态
void main(){

  var func = a();
  func();
  func();
  func();
  func();
}
a(){
  int count =0;
  printCount(){
    print(count++);
  }
  return printCount;
}
// 0
// 1
// 2
// 3