【问题标题】:How to create a simple Tuple class in Dart?如何在 Dart 中创建一个简单的 Tuple 类?
【发布时间】:2021-04-09 19:36:24
【问题描述】:

为什么我不能初始化这个类?

class ChangeThis<T1, T2> {
  final T1 item1;
  final T2 item2;

  ChangeThis({
    this.item1,
    this.item2,
  });
}

int main() {
  ChangeThis<bool, int> changeThis = new ChangeThis<bool, int>(true, 0);
}

我遵循了这个答案:https://stackoverflow.com/a/63060545,但我得到了:

Too many positional arguments: 0 allowed, but 2 found.
  ChangeThis<bool, int> changeThis = new ChangeThis<bool, int>(true, 0);

【问题讨论】:

  • 参数列表中的花括号 ({}) 表示命名参数。如果您需要可选的 位置 参数,请使用方括号 ([])。或者,如果您不想要可选参数,请不要在参数周围放置任何额外的括号或大括号。见dart.dev/guides/language/language-tour#parameters

标签: flutter dart


【解决方案1】:

试试这个

ChangeThis<bool, int> changeThis = new ChangeThis<bool, int>(item1: true, item2: 0);

【讨论】:

    【解决方案2】:

    这样做的原因是您没有使用位置参数。我建议通过 Dart 之旅,特别是 constructors 部分。通过在构造函数中使用{},您正在创建命名构造函数。因此,您需要构造函数如下所示: ChangeThis&lt;bool, int&gt; changeThis = new ChangeThis&lt;bool, int&gt;(item1: true, item2: 0);

    如果您想在构造函数中包含位置参数,那么您只需删除构造函数中的 {} 即可:

     ChangeThis(
        T1 item1,
        T2 item2
      ) {
      this.item1 = item1;
      this.item2 = item2;
    }
    

    但是,正如您所见,命名构造函数是 Dart 包含的一个不错的快捷方式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-28
      • 2019-06-22
      • 2012-03-04
      • 1970-01-01
      • 2013-03-28
      • 2021-12-28
      • 2017-10-22
      相关资源
      最近更新 更多