var
- 型推測できる
- 型指定できない
- 変更可能(1回以上値をセットできる)
// var // 型推測できる var name = 'Bob'; // 値が文字列なのでString型と推測される // 型指定できない // var String lastName = 'Pit'; // コンパイルエラー // 変更可能(1回以上値をセットできる) name = 'Tom'; name = 'Mary';
final
- 型推測できる
- 型指定できる
- 変更不可能(1回だけ値をセットできる)
- varよりもfinalを使うほうがよい
// 型推測できる final name = 'Bob'; // 型指定できる final int age = 27; // 変更不可能(1回だけ値をセットできる) // name = 'Tom'; // コンパイルエラー // varよりもfinalを使うほうがよい // 変更される可能性があるためソースを読みにくい。追いにくい // →バグを生み出しやすい。デバッグしづらい
const
- 型推測できる
- 型指定できる
- コンパイル時に1回だけ値をセットできる
- finalよりもconstを使うほうがよい
// const // コンパイル時に1回だけ値をセットできる // 型指定できる const name = 'Bob'; // name = 'Tom'; // コンパイルエラー // 型指定できる const String lastName = 'Pit'; // 値が実行に評価され、コンパイル時に評価できないためコンパイルエラー // const upperCaseName = name.toUpperCase(); // myAgeとyourAgeはconstなので、totalAgeもコンパイル時に評価可能なのでエラーにならない const myAge = 1; const yourAge = 2; const totalAge = myAge + yourAge; // finalよりもconstを使うほうがよい // compile-time constant // finalよりも実行パフォーマンスが高い