Dart中的函数

定义函数
返回值类型  方法名 (参数){
    方法体
    return 返回值;
}
int test(int a, int b){
  return a + b;
}

main(){
  int a = 1;
  int b = 2;
  int c = test(a, b);
  print(c); //3
}
函数参数
  • 可选参数
    {}中的参数是可选参数
void test(int a, {int b, String c}){
  print("$a  $b  $c");
}

main(){
  test(1); //1  null  null
  test(1, b:2); //1  2  null
  test(1, c:'hello'); //1  null  hello
  test(1, b:2, c:'hello'); //1  2  hello
}
  • 位置参数
    []中定义的参数是位置参数, 位置必须一一对应
void test(int a, [int b, String c]){
  print("$a  $b  $c");
}

main(){
  test(1); //1  null  null
  test(1, 2); //1  2  null
  test(1, 2, 'hello'); //1  2  hello
}
  • 默认参数
    使用等号指定参数默认值, 默认值只能是编译时常量
void test(int a, {int b=3}){
  print("$a  $b");
}

main(){
  test(1); //1  3
}
  • 函数对象
    1.方法可以作为对象赋值给其他变量
    2.方法可以作为参数传递给其他方法
main(){
  //1. 方法作为对象赋值给其他变量
  Function f1 = sayHello;
  f1(); //sayHello方法调用, 输出hello

  //2. 方法作为参数传递给其他方法
  testSayHello(sayHello); //hello
}

void sayHello(){
  print("hello");
}

void testSayHello(Function sayHello){
  sayHello();
}
  • 匿名函数
    1.可赋值给变量, 通过变量调用
    2.可在其他方法中直接调用或传递给其他方法
main(){
  //定义匿名函数
  var f1 = (String str){
    print("Hello $str");
  };
  f1("Dart"); //Hello Dart
}
  • 闭包
    1.闭包是一个方法
    2.闭包定义在其他方法内部
    3.闭包能够访问外部方法内的局部变量, 并持有其状态

你可能感兴趣的:(Dart中的函数)