本节主要记录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
注:传值要按照顺序,不能跨过i
给j
先传值。
默认参数
上述例子中,会出现值为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
来指定命名参数,顺序可以自由写,也可以设置默认参数。
网友评论