Dart(そしてFlutter)におけるイニシャライザリストは、コンストラクタの本体が実行される前にインスタンス変数を初期化する非常に便利な方法です。これは特にfinal
なフィールドを持つクラスで有用です。
イニシャライザリストとは?
以下に簡単な例を示します。
class MyClass {
final int a;
int b;
MyClass(int a, this.b)
: a = a {
print('Constructor body');
}
}
上記のコードでは、MyClass
というクラスが定義されています。a
はfinal
フィールドで、その値は一度設定されると変更できません。b
は普通のフィールドで、値の変更が許可されています。
MyClass
のコンストラクタでは、a
とb
の2つのパラメータを受け取ります。a
はイニシャライザリストで、b
はパラメータリストで初期化されます。
コロン(:
)はイニシャライザリストの開始を示します。この例では、a = a
がイニシャライザリストです。これはコンストラクタの本体(中括弧 {}
内)が実行される前に行われます。
イニシャライザリストの利点
イニシャライザリストは主に次の2つのケースで役立ちます。
final
フィールドの初期化:final
フィールドは一度だけ初期化できます。コンストラクタの本体内で初期化することはできないため、イニシャライザリストを使うことが一般的です。- スーパークラスのコンストラクタ呼び出し: Dartでは、スーパークラスのコンストラクタは明示的に呼び出す必要があります。これはイニシャライザリストの中で行うことができます。
まとめ
DartとFlutterのイニシャライザリストは、コンストラクタの本体が実行される前にフィールドを初期化する非常に便利な方法です。final
フィールドの初期化やスーパークラスのコンストラクタ呼び出しに特に便利です。この機能をうまく活用し、コードの効率性と読みやすさを向上させましょう。
コメント