簡體   English   中英

如何在 dart 中將默認參數分配給除 map 參數之外的函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM