0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Dartにおける変数の修飾子

Last updated at Posted at 2024-10-27

Dartの主な修飾子

Dartで扱うことのできる変数宣言時の修飾子は主に以下の5つ

  • var
  • final
  • const
  • late

それぞれの特徴と制約を覚えて効率よく変数を扱えるようになりたい!ということでまとめていきます。

var

varは動的型付けで、初期値から自動的に型を決定します。
割り当てられた初期値の型が変数の型となります。

var count = 0; // int型と推論される
count = 'Hello!'; // エラー

変数宣言時に初期化をしなくてもエラーにはなりませんが、その場合dynamic型かつnullable型として扱われ、静的型付けが可能なDartの利点が失われます。

また、初期化をされてない変数を利用することは予期せぬバグの原因に繋がるため、宣言時と同時に初期化をする利用方法が推奨されます。

final

finalは一度だけ値を設定可能であり、設定後は値の変更ができません。実行時に値が決定されます。

また、初期化前に変数を利用しようとするとエラーになります。

final int MAX_COUNT = 10;
MAX_COUNT = 100; // エラー

final int count;
count++; // エラー

const

constはコンパイル時定数です。
宣言時の値を設定することが必須で、実行中に値を変更できません。

const String GREETING = 'Hello!';
GREETING = 'Have a Nice Day!'; // エラー

const MORNING_GREETING; // エラー(初期値なしの宣言はできない)

late

lateは遅延初期化を可能にします。
宣言時に初期化をする必要がなく、後で値を設定できます。
varと異なり、明示的に型を指定する必要があります。

こちらも初期化前に変数を利用しようとするとエラーになります。

late String greeting;

print(greeting); // エラー

greeting = 'Hello!'; // 後で初期化ができる

まとめ

修飾子 再代入 初期化タイミング 代入(初期化)可能な値の種類
var 可能 宣言時 任意
final 不可 実行時 任意
const 不可 コンパイル時 定数のみ
late 可能 遅延(初回参照時) 任意
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?