Flutter/Dart finalとconstの違い

Flutter/Dart

はじめに

こんにちは、Flutter/Dartのfinalconstの違いについて見ていきたいと思います。自分がFlutterを使う中でfinalconstの使い方について混乱した経験があります。これらはどちらも変数を不変にするために使われるものですが、何がどう違うのか、どう使い分ければ良いのかが最初はよくわかりませんでした。しかし、その違いと使い方に理解が深まってきたので、紹介していきたいと思います。

finalとconstとは

まず基本的な事から見ていきます。finalconstは、どちらも変数を不変にします。つまり、一度値が設定されるとそれ以降その値は変更できません。

final String greeting = 'Hello, Flutter!';
const String name = 'Dart';

このように変数を宣言した場合、その後でgreetingnameの値を変更しようとしても、それを許さないということです。

finalとconstの違いは?

それぞれのキーワードが変数を不変にするという共通点はありますが、それぞれがどのタイミングで変数の値を固定するかが異なります。

finalキーワードは、ランタイム(つまりプログラムが動作している時)に変数を初期化します。これは、その値がユーザーの入力やデータベースの情報など、プログラムが実行されて初めて知ることができる情報に依存する場合に役立ちます。

final DateTime currentTime = DateTime.now();

一方で、constキーワードはコンパイル時(つまりプログラムが実行される前)に変数を初期化します。これは、その値が常に一定であることが分かっている場合に使用します。

const double pi = 3.14159;

このように、finalconstはいずれも変数の値を不変にしますが、その初期化のタイミングが違うのです。

まとめ

自分が理解したところでは、finalconstの違いは「変数が初期化されるタイミング」です。finalはランタイムに、constはコンパイル時に変数が初期化されます。

この違いを理解すれば、それぞれを適切に使い分けることができます。具体的な値が不確定な場合や、ランタイム時に初めてその値が決まる場合にはfinalを、値が常に一定であり、それがコンパイル時に確定する場合にはconstを使う、という感じです。

今回の記事があなたの役に立てば幸いです。

コメント

タイトルとURLをコピーしました