Dart変数

変数は「メモリ内の名前空間」であり、値を格納するために使用されます。言い換えれば、変数はプログラム内の値のコンテナとして使用されます。変数名は識別子とも呼ばれます。識別子の命名規則は次のとおりです。

  • 識別子をキーワードにすることはできません。
  • 識別子には文字と数字を含めることができます。
  • 識別子には、アンダースコア(_)とドル記号($)を除いて、スペースと特殊文字を含めることはできません。
  • 変数名を数字で始めることはできません。

変数の構文

変数を使用する前に宣言する必要があります。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)
Share

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です