繁体   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