基本的な型定義の仕方
void main() {
int age = 5; // 整数
double weight = 3.7; // 小数
String name = "Pochi"; // 文字列
String breed = 'Shiba'; // 文字列
bool isMale = true; // もしくはfalse
変数定義時にこんな感じで、「型宣言 変数名 = 値」の形式を取る
文末のセミコロンは必須
型推論
// varは最初の代入時に型推論
var a = 123;
a = 456;
// a = "Hello"; // エラー: 型の変更はできない
型宣言なしでvarと書くと型を勝手に推測してくれる。
推測後の型に一致しない値は代入できない。
dynamic型
// dynamicは何型であってもよい
dynamic b = 123;
b = 456;
b = "Hello";
ワイルドカード的になんでも受け付けるの型
typescriptでいうany。
定数
// finalは値の変更を不可に
final c = 123;
// c = 456; // エラー: 値の変更はできない
// c = "Hello"; // エラー: 値の変更はできない
// constも値の変更を不可に( コンパイル時に確定)
const d = 123;
// d = 456; // エラー: 値の変更はできない
// d = "Hello"; // エラー: 値の変更はできない
}
値の再代入が不可能な変数
配列
print("----- 空のリスト -----");
var list1 = <int>[];
list1.add(123);
list1.add(456);
list1.add(789);
list1[1] = 999;
print(list1);
配列の場合、typescript同様要素の型を指定する。
一致しない型の要素は入れられない
// 他のリストの書き方
var list2 = List<int>();
List<int> list3 = [];
List型で定義しつつ要素の方を指定するやり方もある
void main() {
var numbers = [21, 5, 0, 10, 15, 8, 3, 12, 1, 2, 31, 9];
// 以下にコードを記述する
for (int number in numbers) {
if (number < 10) {
print(number);
}
}
}
配列のイテレータもちゃんと型定義する
Set
print("----- 空のセット -----");
Set set2 = {};
set2.add("Tama");
print(set2);
Setも一つの型として扱う。要素の重複を許さないという点はJavascriptと同じ
map
print("----- Map -----");
var map1 = {"Pochi":5,
"Taro":4,
"Jiro":12,
"Shiro":3};
mapはハッシュみたいなkey valueのオブジェクト
print("----- 空のMap -----");
var map2 = {};
map2["Tama"] = 9;
print(map2);
特に型宣言しなくてもmapは定義可