推荐答案
在 Dart 中,定义可选参数有两种方式:命名可选参数和位置可选参数。
命名可选参数
命名可选参数使用 {}
包裹,调用时通过参数名指定值。
void printInfo({String? name, int? age}) { print('Name: $name, Age: $age'); } void main() { printInfo(name: 'Alice', age: 30); // 输出: Name: Alice, Age: 30 printInfo(name: 'Bob'); // 输出: Name: Bob, Age: null }
位置可选参数
位置可选参数使用 []
包裹,调用时按顺序传递值。
void printInfo(String name, [int? age]) { print('Name: $name, Age: $age'); } void main() { printInfo('Alice', 30); // 输出: Name: Alice, Age: 30 printInfo('Bob'); // 输出: Name: Bob, Age: null }
本题详细解读
命名可选参数
- 定义方式:使用
{}
包裹参数列表。 - 特点:
- 调用时可以按任意顺序传递参数。
- 参数名必须明确指定。
- 适合参数较多且调用时可能只传递部分参数的场景。
- 默认值:可以为命名可选参数设置默认值,避免
null
值。
void printInfo({String name = 'Unknown', int age = 0}) { print('Name: $name, Age: $age'); }
位置可选参数
- 定义方式:使用
[]
包裹参数列表。 - 特点:
- 调用时必须按顺序传递参数。
- 适合参数较少且调用时可能省略部分参数的场景。
- 默认值:可以为位置可选参数设置默认值。
void printInfo(String name, [int age = 0]) { print('Name: $name, Age: $age'); }
选择依据
- 如果需要灵活传递参数且参数较多,推荐使用 命名可选参数。
- 如果参数较少且顺序固定,推荐使用 位置可选参数。
注意事项
- 命名可选参数和位置可选参数不能混用。
- 如果函数同时定义了必选参数和可选参数,必选参数必须放在前面。