Functions and Records
Named Parameters with Defaults
Named parameters live in {...}. Each can carry a default so the caller can omit it.
Program
Play the program to call a greeter with and without a named prefix.
named_params.dart
Replay: real traced execution (multi-file project)
String greet(String name, {String prefix = 'Hello'}) {
return '$prefix, $name!';
}
void main() {
var a = greet('Ada');
var b = greet('Lin', prefix: 'Hi');
print('$a / $b');
}
call ← greet('Ada')
5void main() {6 var a = greet('Ada');7 var b = greet('Lin', prefix: 'Hi');values this stepgreet('Ada')callreturn value ← Hello, Ada!
1String greet(String name, {String prefix = 'Hello'}) {2 return '$prefix, $name!';3}values this stepHello, Ada!return valueAdanameHelloprefixa ← Hello, Ada!
5void main() {6 var a = greet('Ada');7 var b = greet('Lin', prefix: 'Hi');values this stepHello, Ada!acall ← greet('Lin', prefix: 'Hi')
6var a = greet('Ada');7var b = greet('Lin', prefix: 'Hi');8print('$a / $b');values this stepgreet('Lin', prefix: 'Hi')callreturn value ← Hi, Lin!
1String greet(String name, {String prefix = 'Hello'}) {2 return '$prefix, $name!';3}values this stepHi, Lin!return valueLinnameHiprefixb ← Hi, Lin!
6var a = greet('Ada');7var b = greet('Lin', prefix: 'Hi');8print('$a / $b');values this stepHi, Lin!bprint('$a / $b');
7 var b = greet('Lin', prefix: 'Hi');8 print('$a / $b');9}outputHello, Ada! / Hi, Lin!values this stepHello, Ada!aHi, Lin!b
named params
Names in `{...}` are passed as `name: value`.
default
`prefix = 'Hello'` is used when the caller omits `prefix`.
call site
`greet('Lin', prefix: 'Hi')` mixes positional and named.