簡體   English   中英

dart中構造函數中的括號是什么

[英]What are the brackets in constructor in dart

@immutable
abstract class MyGithubReposState extends Equatable {
  MyGithubReposState([List props = const []]) : super(props);
}

我在我使用的庫之一中看到了上面的代碼。 [List props = const []]是什么意思? 道具清單一覽?

這是可選參數,如下所述。

  • 一個函數可以有兩種類型的參數: requiredoptional

首先列出必需的參數,然后是任何可選參數。 可選參數可以是命名的或位置的。

  • 可選參數可以是命名的或位置的,但不能兩者兼而有之。

命名參數

調用函數時,您可以使用 paramName: value 指定命名參數。 例如:

這是函數調用

enableFlags(bold: true, hidden: false);

定義函數時,使用 {param1, param2, ...} 指定命名參數:

這就是我們定義它們的方式

/// Sets the [bold] and [hidden] flags ...
void enableFlags({bool bold, bool hidden}) {...}

位置參數

在 [] 中包裝一組函數參數將它們標記為可選的位置參數:

String say(String from, String msg, [String device]) {
  var result = '$from says $msg';
  if (device != null) {
    result = '$result with a $device';
  }
  return result;
}

這樣我們就可以通過兩種方式調用這個函數

沒有可選的位置參數

say('Bob', 'Howdy')

帶有可選的位置參數

say('Bob', 'Howdy', 'smoke signal')

參考這里

[within this is optional]表示這些參數是可選的

官方文檔

在 [] 中包裝一組函數參數將它們標記為可選的位置參數

String say(String from, String msg, [String device]) {
  var result = '$from says $msg';
  if (device != null) {
    result = '$result with a $device';
  }
  return result;
}

以下是不帶可選參數調用此函數的示例:

assert(say('Bob', 'Howdy') == 'Bob says Howdy');

這是使用第三個參數調用此函數的示例:

assert(say('Bob', 'Howdy', 'smoke signal') ==
    'Bob says Howdy with a smoke signal');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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