コンストラクターで最終クラスプロパティを初期化するにはどうすればよいですか? 質問する

コンストラクターで最終クラスプロパティを初期化するにはどうすればよいですか? 質問する

Java では次の操作が可能です:

class A {    
    private final int x;

    public A() {
        x = 5;
    }
}

Dart では、次のことを試しました:

class A {    
    final int x;

    A() {
        this.x = 5;
    }
}

2 つのコンパイル エラーが発生します。

最後の変数 'x' を初期化する必要があります。

そして

'x' は final なので、セッターとして使用できません。

Dart のコンストラクターで最終プロパティを設定する方法はありますか?

ベストアンサー1

あなたできないコンストラクタ本体で final フィールドをインスタンス化します。そのためには特別な構文があります:

class Point {
  final num x;
  final num y;
  final num distanceFromOrigin;

  // Old syntax
  // Point(x, y) :
  //   x = x,
  //   y = y,
  //   distanceFromOrigin = sqrt(pow(x, 2) + pow(y, 2));

  // New syntax
  Point(this.x, this.y) :
    distanceFromOrigin = sqrt(pow(x, 2) + pow(y, 2));
}

おすすめ記事