在 Dart 中混合初始化器和构造函数体

Mixing Up an Initializer and a Constructor Body in Dart

我知道您可以在 class 中初始化 final 变量,例如:

class A {
  final num x;
  final num y;
  final num d;

  A(this.x, this.y): 
    d = sqrt(pow(x, 2) + pow(y, 2));
}

您可以像这样在构造函数中创建常规变量:

class A {
  String z;

  A(){
    z = 'hello';
  }
}

但是如何将两者混合?可能吗?语法是什么?

只需在初始化程序之后继续使用构造函数,但是,由于您要使用大括号 ({}),因此不应使用分号 (;) :

class A {
  final num x;
  final num y;
  final num d;
  String z;

  A(this.x, this.y) 
    : d = sqrt(pow(x, 2) + pow(y, 2))
  {
    z = 'hello';
  }
}