【Flutter/Dart】定数|finalとconstの違いは処理されるタイミング

今回はfinalconstの使い方について紹介します。

finalconstはどちらも定数を定義する際に使用されます。それぞれの違いについても紹介していきます。

\ 世界最大級のオンライン学習サービス /

目次

finalの使い方

final string = 'Hello World';
string = 'New World'; //エラー

//結果
//Error: Can't assign to the final variable 'string'.

varの代わりにfinalを宣言することで定数(変数への再代入できない)を定義できます。

finalを宣言した定数に別の値を代入するとエラーが発生します。

constの使い方

final string = 'Hello World';
string = 'New World'; //エラー

//結果
//Error: Can't assign to the const variable 'string'.

varの代わりにconstを宣言することで定数(変数への再代入できない)を定義できます。

constを宣言した定数に別の値を代入するとエラーが発生します。

finalとconstの違い

  • final:実行時(run-time constant)
  • const:コンパイル時(compile-time constant)

finalconstの違いは処理されるタイミングです。

finalでは実行時(ランタイム時)、constではコンパイル時に処理されます。よってコンパイル時に定義できるオブジェクトにはconst、それ以外にはfinalを使用します。

constを宣言できない例

const now = DateTime.now();

//結果
//Error: Cannot invoke a non-'const' constructor where a const expression is expected.

constはコンパイル時に処理されるのでDateTime.now()のような実行時に処理されるクラスを値として定義できません。

クラスレベルでは「static const」を使用する

class Rectangle {
  static const side = 4;
}

クラスでconstを使用する場合、円周率など普遍的な値に対して使用します。

コンパイル後に値は変化しないのでstaticも一緒に宣言します。

一緒に読みたい

参考

  • URLをコピーしました!
目次