[英]How to assign a default parameter to a function aside of map parameter in dart
知道如何將默認參數分配給飛鏢中Map
參數之外的函數嗎?
static Future functionName(
bool isDone,
[
Map<String, String> params,
]
) async {
....
}
請注意,如果我輸入functionName([...],{bool isDone = false})
它在我刪除[...],
如果你希望isDone
有一個默認值,這意味着它需要成為一個可選參數。 你的函數有一個現有的可選位置參數( params
), Dart 目前不允許將可選位置參數與可選命名參數混合。 因此isDone
是可選的,它也必須是位置的。 為了避免破壞現有的調用者,它應該保留第一個參數:
static Future functionName([
bool isDone = false,
Map<String, String>? params, // Remove the `?` if you don't enable null-safety.
]) async {
....
}
然后你會用你已經做的同樣的方式來稱呼它:
functionName(
true,
{
'key1': value1,
'key2': value2,
...
},
);
這與您現有代碼之間的唯一區別是您現在可以將您的函數調用為functionName()
。 如果您希望調用者能夠使用params
而不是使用isDone
調用您的函數,那么這將是一個重大更改(您需要更新所有調用者)並且需要重新排序參數或將參數更改為可選的命名參數。
一位朋友幫我解決了這個問題,發現函數 args 可以采用默認值,必須在 [] 或 {} 中給出,所以我們是這樣傳遞它的:
static Future functionName(
[
Map<String, String> params,
bool isDone = false,
]
) async {
....
}
並這樣稱呼它:
functionName(
{
'key1': value1,
'key2': value2,
...
},
true,
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.