可选参数其实有两种含义
可选的具名参数
什么是具名?看代码
// 定义了一个这样的函数 void enableFlags(bool bold, bool hidden) { // ... } // 假如参数很多,类型相近,用的时候就不知道哪个参数对应哪个位置了 enableFlags(true, true); // 希望是下面这种带参数名的用法 enableFlags(bold: true, hidden: true); |
要达到具名函数的用法,那就在定义的时候给参数加上 {}
void enableFlags({bool bold, bool hidden}) { // ... } |
可选的位置参数
和 JavaScript不一样的地方是,Dart某些位置可忽略的参数必须在函数定义时用 []
符号指定:
// device参数在调用时可以忽略不传 String say(String from, String msg, [String device]) { var result = '$from says $msg'; if (device != null) { result = '$result with a $device'; } return result; } |