導入
const final どちらも変数を値を書き換えられないものということは理解できる。
void main() {
const int myConst = 1;
final int myFinal = 2;
myConst = 3; // error
myFinal = 4; // error
}
どのような違いがあるか。
const
定義時のみ定数を代入できる。
NG
void main() {
const int myConst; //定義 //error
myConst = 1; //代入
}
NG
void main() {
const DateTime myConst = DateTime.now(); // error
}
OK
void main() {
final int myFinal = 2; //OK
}
final
定義した後でも代入可能。
定数以外のインスタンス等も確保可能。
void main() {
final DateTime myFinal; //定義
myFinal = DateTime.now(); //代入
print('myFinal: $myFinal'); //2022-02-26 16:23:54.138
}
まとめ
const | final |
---|---|
定数のみ定義可能 | 定数に限らず定義可能 |
定義時のみ代入可能 | 定義後も代入可能 |