【问题标题】:Defining property in constructor在构造函数中定义属性
【发布时间】:2021-06-19 14:06:12
【问题描述】:

我正在尝试做一些其他面向对象语言的基本功能,但由于 Dart 中的某些原因,我无法做到。我是 Dart 新手,所以这个问题可能很愚蠢,但我在网上找不到任何答案。

我有一个属性需要在构造函数上计算一次。到目前为止,这是我的代码:

class Game {
  String _wordChosen;

  Game() {
    final _random = Random();
    _wordChosen = WORDS[_random.nextInt(WORDS.length)];
  }
}

WORDS 是在类之外定义的列表。我的错误是在游戏构造函数上: not_initialized_non_nullable_instance_field.

我不想将_wordChosen 变量设置为默认值,因为这没有任何意义(它会在构造函数运行时被覆盖)。 我也不想再次将属性设置为可为空,这没有任何意义。

【问题讨论】:

标签: dart


【解决方案1】:

我认为答案是使用关键字 late 让编译器知道你会在使用它之前初始化变量,但现在不像下面这样

late String _wordChosen;

我认为这是您的解决方案,它在 null 安全文档中 here 希望这个回答对你有帮助

【讨论】:

  • 我遇到过这个解决方案,但它似乎不自然,我希望得到一个更“自然”的解决方案,但可能没有。
猜你喜欢
  • 2021-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多