![見出し画像](https://assets.st-note.com/production/uploads/images/125652853/rectangle_large_type_2_42c43f288a21feca1f8d653afc1a19b8.png?width=1200)
【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はアプリの実行時に変わる、けど、同じ値の場合もある、みたいなノリなんですね!😄)
いいなと思ったら応援しよう!
![gorojy](https://assets.st-note.com/production/uploads/images/172166903/profile_a9600fc7e2166bc937e3b5560c69d5cc.png?width=600&crop=1:1,smart)