※本記事で使用している環境
<パソコン>
機種:MacBook Air(13inch)
OS:macOS Sonoma(ver.14.5)
<ソフトウェア>
・GoogleChrome(ver.126.0.6478.127)
・DartPad(Dart 3.4.3・Flutter 3.22.2)
前回は、基本的なコーディング規則と変数について解説しました。
今回は、定数について解説します。
おすすめ書籍
定数とは
定数の説明は、以下の通りです。
定数とは、一度値を代入するとその値を変更することができない変数のこと。
Dartでは、「final」と「const」の2つが使われている。
試しに、以下のコードを入力してみましょう。
name という変数に「fuga」という値を再代入しようとしています。
void main() {
final name = "hoge";
name = "fuga";
print(name);
}
再代入しようとすると、エラーになりました。
やはり、定数は初期化で代入した値を変更することができません。
finalの記述方法
finalは、以下のように記述しましょう。
void main() {
final name = "hoge";
print(name);
}
上の場合は、型名を省略しています。
もちろん、省略せずに記述することも可能です。
void main() {
final String name = "hoge";
print(name);
}
(おまけ)型判別
話が変わりますが、[変数名 is 型名]と記述することで、変数の型を判別することができます。
以下の場合は、nameという変数がString型かどうかを判別しています。
String型だとtrue、それ以外の型だとfalseが出力されます。
void main() {
final String name = "hoge";
print(name is String);
}
constの記述方法
constもfinalと同じように記述します。
void main() {
const String name = "hoge";
print(name is String);
}
もちろん、再代入しようとするとコンパイルエラーが起こります。
void main() {
const String name = "hoge";
name = "fuga";
print(name is String);
}
finalとconstの違いですが、以下のような違いがあります。
- final は実行時にエラーが起こる
- const はコンパイル時にエラーが起こる
よって、constの方がコンパイル時に決められているのでより高速に動作する。
constの利用例
利用法1
const の利用法として、わかりにくい数字を規定しておくという使い方があります。
たとえば、constで作成した変数に円周率を入力しといて、半径をと組み合わせることで、円周を求めることができるような場合です。
void main() {
const circumCalc = 2 * 3.14;
print(circumCalc * 8);
}
利用法2
もう一つ、重要な使い方があります。
それは、List を使用する時です。
ほぼ、Javaにおける配列と一緒。
List の記述方法は以下通りです。
void main() {
List<int> list1 = [1, 2, 3];
print(list1);
}
定数final を先頭につけ、その後に
list1.add(4) //← list1 に 4 という値を付け加えるという意味
と記述してみましょう。
void main() {
final List<int> list1 = [1, 2, 3];
list1.add(4);
print(list1);
}
なんと、final をつけたにも関わらず、追加することができました。
次に、const で試してみましょう。
void main() {
final List<int> list1 = [1, 2, 3];
list1.add(4);
print(list1);
const List<int> list2 = [1, 2, 3];
list2.add(4);
print(list2);
}
コンパイルエラーが起こりました。
このように、final は List の値を追加することができますが、const の場合は List の中身を一切変えることができません。
ちなみに、const は以下のように、右側に記述することも可能です。
(※final はこのように記述することはできません)
void main() {
final List<int> list1 = [1, 2, 3];
list1.add(4);
print(list1);
List<int> list2 = const[1, 2, 3];
list2.add(4);
print(list2);
}
const を削除することで、無事にプログラムを実行することができるようになります。
void main() {
final List<int> list1 = [1, 2, 3];
list1.add(4);
print(list1);
List<int> list2 = [1, 2, 3];
list2.add(4);
print(list2);
}
これにて、定数の解説は終わりです。
次は、型について解説します。
コメント