Dart-programming-variables
Dartプログラミング-変数
変数は、値を格納する「メモリ内の名前付きスペース」です。 つまり、プログラム内の値のコンテナとして機能します。 変数名は識別子と呼ばれます。 以下は、識別子の命名規則です-
- 識別子をキーワードにすることはできません。
- 識別子にはアルファベットと数字を含めることができます。
- アンダースコア(_)とドル($)記号を除いて、識別子にスペースと特殊文字を含めることはできません。
- 変数名は数字で始めることはできません。
型の構文
変数は、使用する前に宣言する必要があります。 Dartはvarキーワードを使用して同じことを実現します。 変数を宣言するための構文は以下のとおりです-
var name = 'Smith';
dartのすべての変数は、値を含むのではなく、値への参照を格納します。 nameという変数には、「Smith」という値を持つStringオブジェクトへの参照が含まれています。
Dartは、変数名の前にデータ型を付けることで type-checking をサポートしています。 型チェックにより、変数がデータ型に固有のデータのみを保持することが保証されます。 同じための構文は以下のとおりです-
String name = 'Smith';
int num = 10;
次の例を考慮してください-
void main() {
String name = 1;
}
上記のスニペットでは、変数に割り当てられた値が変数のデータ型と一致しないため、警告が表示されます。
出力
Warning: A value of type 'String' cannot be assigned to a variable of type 'int'
すべての初期化されていない変数の初期値はnullです。 これは、Dartがすべての値をオブジェクトと見なすためです。 次の例は同じことを示しています-
void main() {
int num;
print(num);
}
出力
Null
動的キーワード
静的型なしで宣言された変数は、暗黙的に動的として宣言されます。 変数は、varキーワードの代わりにdynamicキーワードを使用して宣言することもできます。
次の例は同じことを示しています。
void main() {
dynamic x = "tom";
print(x);
}
出力
tom
最終および定数
*final* および *const* キーワードは、定数を宣言するために使用されます。 Dartは、finalまたはconstキーワードを使用して宣言された変数の値の変更を防ぎます。 これらのキーワードは、変数のデータ型と組み合わせて、または *var* キーワードの代わりに使用できます。
*const* キーワードは、コンパイル時の定数を表すために使用されます。 *const* キーワードを使用して宣言された変数は、暗黙的にfinalです。
構文:最終キーワード
final variable_name
OR
final data_type variable_name
構文:constキーワード
const variable_name
OR
const data_type variable_name
例-最終キーワード
void main() {
final val1 = 12;
print(val1);
}
出力
12
例– constキーワード
void main() {
const pi = 3.14;
const area = pi*12*12;
print("The output is ${area}");
}
上記の例では、 const キーワードを使用して、 pi および area の2つの定数を宣言しています。 area 変数の値はコンパイル時の定数です。
出力
The output is 452.15999999999997
注-コンパイル時定数の計算に使用できるのは const 変数のみです。 コンパイル時定数は、コンパイル時に値が決定される定数です。
例
*final* またはconstキーワードで宣言された変数を変更しようとすると、Dartは例外をスローします。 以下に示す例は同じことを示しています-
void main() {
final v1 = 12;
const v2 = 13;
v2 = 12;
}
上記のコードは、次のエラーを output としてスローします-
Unhandled exception:
cannot assign to final variable 'v2='.
NoSuchMethodError: cannot assign to final variable 'v2='
#0 NoSuchMethodError._throwNew (dart:core-patch/errors_patch.dart:178)
#1 main (file: Test.dart:5:3)
#2 _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:261)
#3 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:148)