Dart 初始化和 final、final late

Dart initialization and final, final late

提问人:Devin 提问时间:11/16/2023 最后编辑:Devin 更新时间:11/16/2023 访问量:21

问:

嗨,开发人员!我正在使用 Dart 进行颤动。我试图弄清楚为什么下面的代码不需要“late”或“final”作为其变量。我知道这些术语的含义,但我对代码实际启动或“初始化”的时间和地点感到困惑。

有人可以帮我分解一下或给我一些例子吗?我真的很感激!

谢谢!

`

class Player {
   final String name;
   String mode; 
//`why we do not need late final or late here? `
   int xp;
   int level;
  
  Player(this.name, this.mode, this.xp, this.level); 

// as we declare variables with **'this'** , we initialized variable? 


  
  void playGame() {
    print("You choose $name, $mode. detail: xp = $xp, play level = $level",);
  }

}


void main() {
  var player = Player("King99", "Wizard",1000, 1); 
`// or initialization happened here?`
  player.playGame();
  var player2 = Player("Queen11", "Wizard", 5000, 3);
  player2.playGame();

}
DART 初始化 最终 构造

评论

0赞 jamesdlin 11/16/2023
你为什么期望这些变量是 or ?只有当你的类具有构造函数时,才需要使用,这要求对象在字段中是不可变的。这些成员也不需要,因为构造函数会立即初始化它们。finallatefinalconstfinallatePlayer
0赞 Devin 11/16/2023
嗨,@jamesdlin!谢谢你的评论!这不是我想添加或的原因。我正在看讲师的视频,当他构建上述代码时,他删除了 and。所以我想知道为什么并删除了。我想了解更多关于构造函数如何初始化的信息。它是否在我们使用 时被初始化,并且(用分号?我想我不确定这段代码的确切初始化位置finallatefinallatefinallatePlayerString mode;int xp;int level;
0赞 jamesdlin 11/16/2023
mode、 和 应该是可变的(玩家的经验和等级可以改变),所以它们不应该是 .他们没有理由. 应仅在必要时使用。调用构造函数时,将初始化所有成员。我建议阅读 Dart 语言之旅,特别是 dart.dev/language/constructorsxplevelfinallatelate

答: 暂无答案