【Flutter/Dart】finalとconstの違いを、さらっと知るための記事
`final` と `const` の違いについて説明します。
final
`final` キーワードは、変数が一度だけ値を割り当てられ、その後はその値を変更できないことを意味します。
`final` 変数の値は、実行時に決定されます。つまり、プログラムが実行されるときに値が割り当てられます。
`final` は、インスタンス変数(オブジェクトごとに異なる値を持つことができる)や、関数内のローカル変数として使用することが一般的です。
例えば、ユーザーからの入力や、データベースからのデータなど、実行時にしか決定できない値に使用されます。
const
`const` キーワードは、変数がコンパイル時の定数であることを意味します。
`const` 変数の値は、コンパイル時に決定され、プログラム内で一度定義されると変更することはできません。
`const` は、コンパイル時にその値が既知であり、プログラム全体で変更されない値に使用します。例えば、設定値やラベルテキストなどです。
例
final DateTime currentTime = DateTime.now(); // 実行時に現在時刻を取得
const int maxUsers = 100; // コンパイル時に定数として100を割り当て
この例では、`currentTime` はプログラムが実行されるときに現在の時刻を取得していますが、`maxUsers` はプログラムがコンパイルされる時点で値が決まっています。
要するに、`final` は実行時に一度だけ値を割り当てる変数用で、`const` はプログラム全体を通じて不変であるコンパイル時の定数用です。
(ややこしいですけど、constはアプリとして提出のためにビルドしたらもう二度と不変で、finalはアプリの実行時に変わる、けど、同じ値の場合もある、みたいなノリなんですね!😄)
よろしくお願いしますッ!