推荐答案
在 Dart 中,命名参数是通过在函数参数列表中使用大括号 {}
来定义的。命名参数是可选的,调用函数时可以通过指定参数名来传递值。
void greet({String name, String greeting}) { print('$greeting, $name!'); } void main() { greet(name: 'Alice', greeting: 'Hello'); // 输出: Hello, Alice! greet(greeting: 'Hi', name: 'Bob'); // 输出: Hi, Bob! }
本题详细解读
命名参数的定义
在 Dart 中,命名参数是通过在函数参数列表中使用大括号 {}
来定义的。命名参数是可选的,这意味着在调用函数时,你可以选择性地传递这些参数。
void greet({String name, String greeting}) { print('$greeting, $name!'); }
在上面的例子中,name
和 greeting
都是命名参数。
命名参数的调用
调用带有命名参数的函数时,你需要使用参数名来传递值。参数的顺序可以任意,因为它们是按名称匹配的。
void main() { greet(name: 'Alice', greeting: 'Hello'); // 输出: Hello, Alice! greet(greeting: 'Hi', name: 'Bob'); // 输出: Hi, Bob! }
默认值
命名参数可以设置默认值。如果在调用函数时没有传递该参数,则会使用默认值。
void greet({String name = 'Guest', String greeting = 'Hi'}) { print('$greeting, $name!'); } void main() { greet(); // 输出: Hi, Guest! }
必需命名参数
从 Dart 2.12 开始,你可以使用 required
关键字来标记命名参数为必需的。如果调用函数时没有传递该参数,编译器会报错。
void greet({required String name, String greeting = 'Hi'}) { print('$greeting, $name!'); } void main() { greet(name: 'Alice'); // 输出: Hi, Alice! // greet(); // 这行代码会报错,因为 name 是必需的 }
总结
命名参数是 Dart 中一种灵活的参数传递方式,允许你在调用函数时按名称传递参数。通过使用大括号 {}
定义命名参数,你可以使函数调用更加清晰和灵活。