今更聞けない!Dartの変数の種類と使い方を分かりやすく解説

Dartの変数の種類

Dartには、以下の種類の変数があります。

  • var変数
  • late変数
  • final変数
  • const変数
  • nullable変数

今回は以上5つの変数について説明をしていきます。

var変数

varは、Dartの動的型付けを表すキーワードであり、宣言時に型を指定せずに使用できます。つまり、変数に初期値を割り当てることによって、宣言された変数の型を自動的に推測してくれます。

Dart
// 型が事前にわからない場合、var変数を使用する
var count = 0; // 型がint型であることが推測される
var name = 'John Doe'; // 型がString型であることが推測される

late変数

late変数は、宣言時に値を割り当てず、後で初期化することができる変数です。Dartは、late変数を使用する場合、その変数が遅延初期化されることを保証します。変数の初期化を行わない場合は、エラーが発生してしまいます。

Dart
// 初期化されない変数が必要な場合、late変数を使用する
late int count; // countは後で初期化される
count = 10; // countを初期化

var変数とlate変数の違い

var変数
変数の宣言と初期化を同時に行う必要がある(値を入れる必要がある)また、変数の型を自動的に推測してくれる

late変数
変数の宣言を行い、その後に初期化を行うことができる(値を後から入れることができる)変数の型を設定する必要がある

つまり、var変数とlate変数の違いとしては、初期化のタイミングと変数の型の設定方法である。

Dart
// bad code
var count; // var変数を使用するときは宣言と初期化を同時に行う必要がある

// good code
var count = 10; // countの初期化が行われている

// bad code
late count; // late変数では型を設定する必要がある

// good code
late int count; // countは後で初期化される

// late変数では宣言と初期化を同時に行うことも可能だが
// 初期化を後からできるというlate変数の良さを使いこなせていない
late int count = 10;

final変数

final変数は、宣言後に値を変更できない変数です。final変数には、宣言時またはコンストラクター内で値を割り当てる必要があります。final変数は、一度しか初期化されず、変更されないことが保証されます。

Dart
// 値を変更しない変数が必要な場合、final変数を使用する
final int MAX_COUNT = 100; // MAX_COUNTは、プログラム中で変更されない値である
final String message = 'Hello, world!'; // messageは、後で変更されない値である

const変数

const変数は、宣言後に値を変更できない変数であり、宣言時に値を割り当てる必要があります。const変数は、コンパイル時に評価されます。つまり、const変数は、実行時ではなくコンパイル時に定義されます。

Dart
// 定数であり、実行時に変更されないことが保証される場合、const変数を使用する
const PI = 3.14; // PIは、実行時に変更されない値である
const String GREETING = 'Hello, world!'; // GREETINGは、実行時に変更されない値である

nullable変数

nullable変数は、nullを含めることができる変数です。Dartでは、nullable変数を宣言する場合、その変数がnullを許容することを示す必要があります。変数に値を割り当てる前に、nullチェックが必要です。nullable変数には、?を使って宣言します。

Dart
// 変数にnullを許容する必要がある場合、nullable変数を使用する
String? name; // nameはnullを含む可能性がある
if (name != null) {
    print(name.length); // nullでない場合にのみ、name.lengthを使用
}

これらのの変数の種類を使い分けることで、プログラムがより意図通りに動作し、かつ保守性が向上することがわかります。

関連記事

関連記事が見つかりませんでした。