見出し画像

【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はアプリの実行時に変わる、けど、同じ値の場合もある、みたいなノリなんですね!😄)


よろしくお願いしますッ!