Dart基础语法<五> 参数

本节主要记录Dart方法参数中的

  • 可选位置参数
  • 默认参数
  • 可选命名参数

java中经常会出现各种重载函数

void f1(int i, int j) {}
void f1(int i){
  f1(i, 0);
}

但一旦业务要求可能需要大量重复的定义。Dart提供了可选参数实现方法的灵活调用。
注:定义方法时可以有必需可选两种类型参数。 必需参数需要在参数列表前面, 然后再定义可选参数。

可选位置参数

Dart中,可用可选位置参数灵活处理。被中括号[]括起来的方法参数,即为可选位置参数,传值时按照参数位置顺序传递。

void f1([int i, int j]) {
  print(i);
  print(j);
}

void main() {
  f1();
  f1(1);
  f1(1, 2);
}
  • f1() 无输入值,故输出结果为null null
  • f1(1) 输入值i=1,j无输入参数,故输出结果为1 null
  • f1(1, 2) 输入值i=1,j=2,故输出结果为1 2

注:传值要按照顺序,不能跨过ij先传值。

默认参数

上述例子中,会出现值为null的情况。实际开发中,在定义方法时,可选参数可用 = 定义默认值。

void f1([int i = 100, int j = 99]) {
  print(i);
  print(j);
}

void main() {
  f1();
  f1(1);
  f1(1, 2);
}
  • f1() 无输入值,故输出结果均为默认值100 99
  • f1(1) 输入值i=1,j无输入参数(则为默认值),故输出结果为1 99
  • f1(1, 2) 输入值i=1,j=2,故输出结果为1 2
可选命名参数

用大括号 {} 将方法的参数括起来则变成可选命名参数

void f1({int i = 99, int j = 100}) {
  print(i);
  print(j);
}

void main() {
  f1();
  f1(i: 30);
  f1(j: 50);
  f1(i: 30, j: 50);
  f1(j: 50, i: 30);
}
  • f1() 无输入值,故输出结果均为默认值99 100
  • f1(i: 30) 输入值i=30,j无输入参数(则为默认值),故输出结果为30 100
  • f1(j: 50) i无输入参数(则为默认值),输入值j=50,故输出结果为99 50
  • f1(i: 30, j: 50)和 f1(j: 50, i: 30),均表示输入值i=30,输入值j=50,输出结果为30 50

注:调用方法时,需要使用类键值对形式 paramName: value 来指定命名参数,顺序可以自由写,也可以设置默认参数。

猜你喜欢

转载自blog.csdn.net/qq_22255311/article/details/111774218