変数は「メモリ内の名前空間」であり、値を格納するために使用されます。言い換えれば、変数はプログラム内の値のコンテナとして使用されます。変数名は識別子とも呼ばれます。識別子の命名規則は次のとおりです。
- 識別子をキーワードにすることはできません。
- 識別子には文字と数字を含めることができます。
- 識別子には、アンダースコア(_)とドル記号($)を除いて、スペースと特殊文字を含めることはできません。
- 変数名を数字で始めることはできません。
目次
変数の構文
変数を使用する前に宣言する必要があります。Dartは、var
キーワードを使用して変数を識別します。変数を宣言するための構文は次のとおりです。
var name = 'smith';
Dartのすべての変数は、値を含むのではなく、値への参照を格納します。name変数にはStringオブジェクトへの参照が含まれ、その値はSmithです。
Dartは、変数名の前にデータ型を付けることで型チェックをサポートしています。型チェックは、変数にデータ型に固有のデータのみが含まれていることを確認します。同じ構文を以下に示します。
String name = 'Maxsu';
int number = 99;
以下の実例を実行します。
void main() {
String name = 1;
}
上記のコードスニペットでは、変数に割り当てられた値が変数のデータ型と一致しないため、警告が表示されます。
実行した後、出力結果は次のとおりです。
Warning: A value of type 'String' cannot be assigned to a variable of type 'int'
デフォルト値
初期化されていない変数の初期値はnull
です。数値がDartのその他の変数と同じであるため、数値型の変数の初期値がnullでも、これらはすべてオブジェクトです。以下の実例には、この状況を示しています。
void main() {
int num;
print(num);
}
出力結果:
Null
dynamicキーワード
静的型が指定されていない変数がないことを宣言すると、暗黙的にdynamic
として宣言されます。var
キーワードの代わりにdynamic
キーワードを使用して、変数を宣言することもできます。
以下の実例を参照します。
void main() {
dynamic x = "tom";
print(x);
}
finalとConst
final
キーワードとconst
キーワードは、定数を宣言するために使用されます。Dartでfinal
またはconst
キーワードで宣言された変数の値を変更することはできません。これらのキーワードは、変数のデータ型と使用でき、var
キーワードとも使用できます。
const
キーワードは、コンパイル時定数を表すために使用されます。const
キーワードで宣言された変数は、暗黙的にfinal
です。
finalキーワードの構文
final variable_name
// 或いは
final data_type variable_name
実例:
void main() {
final val1 = 12;
print(val1); // 出力結果:12
}
constキーワードの構文
const variable_name
// 或いは
const data_type variable_name
実例:
void main() {
const pi = 3.14;
const area = pi*12*12;
print("The output is ${area}"); // 出力結果: 452.15999999999997
}
ヒント–コンパイル時定数の計算に使用できるのはconst
変数のみです。コンパイル時定数は定数であり、その値はコンパイル時に決定されます。
実例
final
またはconst
キーワードで宣言された変数を変更しようとすると、Dartは例外をスローします。次には実例を挙げます。
void main() {
final v1 = 12;
const v2 = 13;
v2 = 12;
}
上記のコードを実行すると、以下のエラーがスローされます。
$dart main.dart
Unhandled exception:
cannot assign to final variable 'v2='.
NoSuchMethodError: cannot assign to final variable 'v2='
#0 NoSuchMethodError._throwNew (dart:core-patch/errors_patch.dart:176)
#1 main (file:///home/cg/root/3257025/main.dart:4:4)
#2 _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:255)
#3 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:142)
コメントを残す