【问题标题】:What are the brackets in constructor in dart飞镖构造函数中的括号是什么
【发布时间】:2020-04-03 04:59:24
【问题描述】:
@immutable
abstract class MyGithubReposState extends Equatable {
  MyGithubReposState([List props = const []]) : super(props);
}

我在我使用的一个库中看到了上面的代码。 [List props = const []] 是什么意思?道具清单列表?

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    来自official docs

    在 [] 中包装一组函数参数将它们标记为可选位置参数

    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');
    

    【讨论】:

      【解决方案2】:

      这是可选参数,如下所述。

      • 一个函数可以有两种类型的参数: 必需可选

      首先列出必需的参数,然后是任何可选参数。可选参数可以命名或定位。

      • 可选参数可以是命名的也可以是位置的,但不能同时使用。

      命名参数

      调用函数时,可以使用 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')
      

      Reference here

      【讨论】:

        【解决方案3】:

        [within this is optional] 表示这些参数是可选的

        【讨论】:

          猜你喜欢
          • 2018-10-20
          • 2018-10-29
          • 1970-01-01
          • 2020-08-15
          • 2019-08-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多