Dart Basic その3
本ページはDartについて学習した内容を記録したものです。
List
Listは配列のようなものだ。Listを使うにはデータタイプを指定する必要がある。宣言は以下のコードのようにする。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void main() {
List<int> numbers = [
1,
2,
3,
4,
5,
6,
];
List<String> lesserafim = [
'サクラ',
'チェウォン',
'ユンジン',
'カズハ',
'ウンチェ',
];
print(numbers);
print(lesserafim);
}
1
2
[1, 2, 3, 4, 5, 6]
[サクラ, チェウォン, ユンジン, カズハ, ウンチェ]
コードが整理されているように見えないか?
要素の最後にコンマをつけてDartPad上にあるFormatをクリックすると上記のように整理してくれる。今後、VSCodeでFlutterを触るときも最後にコンマをつけることで綺麗に整理してくれるので最後にコンマをつけることにしよう。
Listを使う時は配列と同じようにインデックスで使える。インデックスは0から始まる。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void main() {
List<int> numbers = [
1,
2,
3,
4,
5,
6,
];
List<String> lesserafim = [
'サクラ',
'チェウォン',
'ユンジン',
'カズハ',
'ウンチェ',
];
print(numbers[0]);
print(lesserafim[1]);
}
1
2
1
チェウォン
当たり前だが、out of rangeエラーも存在する。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void main() {
List<String> lesserafim = [
'サクラ',
'チェウォン',
'ユンジン',
'カズハ',
'ウンチェ',
];
print(lesserafim[0]);
print(lesserafim[1]);
print(lesserafim[2]);
print(lesserafim[3]);
print(lesserafim[4]);
print(lesserafim[5]);
}
1
2
3
4
5
6
サクラ
チェウォン
ユンジン
カズハ
ウンチェ
Uncaught Error: RangeError (index): Index out of range: index should be less than 5: 5
要素は5個なので最後のインデックスは4である。5を指定すると範囲が超えているので怒られる。
次はListの要素が何個あるかを調べてみよう。
1
2
3
4
5
6
7
8
9
10
void main() {
List<String> lesserafim = [
'サクラ',
'チェウォン',
'ユンジン',
'カズハ',
'ウンチェ',
];
print('ル・セラフィムのメンバーは${lesserafim.length}人です。');
}
1
ル・セラフィムのメンバーは5人です。
Listクラスにすでに定義されているlengthで要素数が分かる。
次はListでよく使う機能をみてみよう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void main() {
List<String> lesserafim = [
'サクラ',
'チェウォン',
'ユンジン',
'カズハ',
'ウンチェ',
];
print('ル・セラフィムのメンバーは${lesserafim.length}人です。');
// 要素の追加
lesserafim.add('パパノヤン');
print(lesserafim);
// 要素の削除、パパノヤンはおっさんなので除名
lesserafim.remove('パパノヤン');
print(lesserafim);
// カズハは何番目にいる?
print('カズハのインデックスは${lesserafim.indexOf('カズハ')}');
}
1
2
3
4
ル・セラフィムのメンバーは5人です。
[サクラ, チェウォン, ユンジン, カズハ, ウンチェ, パパノヤン]
[サクラ, チェウォン, ユンジン, カズハ, ウンチェ]
カズハのインデックスは3
Map
Mapはキーと値のペアで保存するタイプだ。Listは値を入れれば、インデックスが決まってインデックスで参照できる。Mapはキーで参照するものである。
宣言はキーと値のデータタイプ指定が必要だ。
1
2
3
4
5
6
7
8
9
void main() {
Map<String, String> rgbColor = {
'red': '#FF0000',
'green': '#00FF00',
'blue': '#0000FF',
};
print(rgbColor);
print(rgbColor['blue']);
}
1
2
{red: #FF0000, green: #00FF00, blue: #0000FF}
#0000FF
使う時は上のようにキーを指定して値を取得することができる。
要素の追加と削除、変更をやってみよう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void main() {
Map<String, String> rgbColor = {
'red': '#FF0000',
'green': '#00FF00',
'blue': '#0000FF',
};
print(rgbColor);
// 追加
rgbColor['magenta'] = '#FFFFFF';
print(rgbColor);
// 変更
rgbColor['magenta'] = '#FF00FF';
print(rgbColor);
// 削除
rgbColor.remove('magenta');
print(rgbColor);
}
1
2
3
4
{red: #FF0000, green: #00FF00, blue: #0000FF}
{red: #FF0000, green: #00FF00, blue: #0000FF, magenta: #FFFFFF}
{red: #FF0000, green: #00FF00, blue: #0000FF, magenta: #FF00FF}
{red: #FF0000, green: #00FF00, blue: #0000FF}
追加は存在しないキーで指定して値を追加することができる。変更はキーで指定し、値を設定することで変更ができる。
要素の削除はMapに定義されているremoveにキーを指定することで削除ができる。
最後にMapでよく使う機能であろうキー、値を取得することをやってみよう。
1
2
3
4
5
6
7
8
9
void main() {
Map<String, String> rgbColor = {
'red': '#FF0000',
'green': '#00FF00',
'blue': '#0000FF',
};
print(rgbColor.keys);
print(rgbColor.values);
}
1
2
(red, green, blue)
(#FF0000, #00FF00, #0000FF)
Listではないが、ループなどで使えるような形で返却される。
Set
SetはListと似たようなもので違いは、
Listは重複している値を追加することができるが、
Setは重複している値は追加されない。
1
2
3
4
5
6
7
8
9
10
11
void main() {
List<String> fav = ['Dart', 'Flutter', 'Flame', 'Game'];
print(fav);
fav.add('Dart');
print(fav);
Set<String> fav2 = {'Dart', 'Flutter', 'Flame', 'Game'};
print(fav2);
fav2.add('Dart');
print(fav2);
}
1
2
3
4
[Dart, Flutter, Flame, Game]
[Dart, Flutter, Flame, Game, Dart]
{Dart, Flutter, Flame, Game}
{Dart, Flutter, Flame, Game}
Listは重複関係なく追加されるが、Setの場合は重複をチェックし、重複している要素は追加しないのが分かる。
コメントする