世界最大級のオンライン学習サービス「Udemy(ユーデミー)」とは?

【Flutter/Dart】定数とは?finalとconstの違い・使い分け

今回はDart言語における「定数」の概念と使い方について解説していきます。

プログラミング初心者でも理解しやすい内容になっているのでぜひ最後までご覧ください。

目次

プログラミング言語における「定数」とは?

まずはプログラミング言語における定数の大まかなイメージから解説していきます。

定数とはズバリ「数値や文字などの値(データ)を一度入れると変えられない箱」のことです。

箱に名前をつけておくことで箱の中のデータを簡単に取り出せるようになります。

「変数」と「定数」の違いとは?

前回のレッスンで「定数」と似た性質を持つ「変数」について解説しましたが、次のような明確な違いがあります。

  • 変数とは、値を何度も入れ替えできる箱
  • 定数とは、値を一度入れたら変えられない箱

よって箱に入れたデータを後で入れ替えする可能性がある場合には「変数」、変更できないようにしたい場合には「定数」として使い分けをします。

定数のメリット・用途

プログラミング初心者の方の中には「なぜ定数で値を格納する必要があるのか?」気になっている方もいると思いますので変数のメリットについて次の3つを解説しておきます。

  • 変更してはいけないデータを安全に管理できる
  • 繰り返しデータを利用できる
  • 可読性が向上する

変更してはいけないデータを安全に管理できる

開発を進めていく上で「住所」や「電話番号」など間違えて変えてはいけないデータや、「円周率」など値が変わらないデータを取り扱う機会が多くあります。

そのような場合は定数として値を管理することで安全にデータを維持できます。

また定数は変数とは異なるfinalまたはconstと呼ばれる修飾子を使用して初期化するので視覚的にも変更してはいけない重要なデータであることを確認できます。

繰り返しデータを利用できる

プログラミングでは繰り返し同じコードが必要となることが多く、コードが長い場合はいちいち同じコードを書く必要があり非効率です。

そのような場合は繰り返し利用するデータを定数としてまとめておくことで、必要な場合に定数を呼び出してデータを取得できます。

可読性が向上する

定数を使えば複雑なデータに分かりやすい名前をつけて格納したり、長いコードを1つにまとめたりできるので可読性が向上します。

例えば「012012345678」の数値があったとします。この数値に「phone」と名前をつけた定数とすることで第三者でも理解しやすいデータとして扱うことが可能です。

定数の使い方・書き方

定数を初期化するための修飾子はfinalconstの2種類があります。

定数の初期化

定数を初期化するには定数名の前でfinalまたはconstのいずれかの修飾子を宣言することで定義できます。

//finalで初期化
final pi = 3.1415;

//constで初期化
const pi = 3.1415;

final と const の違いとは?

定数の初期化にはfinalconstの2種類があり一見どちらも同じように見えますが、初期化されるタイミングが異なります。

  • final はビルド時に初期化される
  • const はコンパイル時に初期化される

final と const の使い分け

ビルド時に値が代入されるデータを扱う場合にはfinal、コンパイル時に値が代入されるデータを扱う場合にはconstで定数を初期化するように使い分けます。

例としてDateTime.now()のようなメソッドではビルド時に値が代入されるので、constで宣言した定数に代入してしまうとエラーが発生します。

まとめ

今回はDart言語における「定数」の基本的な使い方について解説しました。

参考サイト

目次