0Pricing
Dart Academy · レッスン

ジェネリックコレクションの実践

List、Map、独自コンテナに型を付ける

「ジェネリックコレクションの実践」はCoddyKit上の無料Dart Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDart Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Dart Academyコースには全4レッスンが含まれています。

コレクションはジェネリック

Dartで日常的に使うコレクションは、すべてジェネリックです。List、Set、Mapはそれぞれ型パラメーターを受け取り、保持する値の型を固定します。📦

Listに型を指定する

Listは、要素の型を指定する1つの型パラメーターを受け取ります。List of Stringと宣言すると、すべての要素がStringでなければなりません。

List<String> names = ['Ada', 'Linus'];

Setに型を指定する

Setも同じように使えますが、要素は重複しません。Set of intには、重複のない整数を保持できます。

Set<int> ids = {1, 2, 2, 3};

Mapに型を指定する

Mapは、キー用と値用の2つの型パラメーターを受け取ります。順序が重要で、キーの型を先に記述します。

Map<String, int> ages = {'Ada': 36};

リテラルからの推論

リテラルを記述すると、Dartはその内容から型を推論することがよくあります。数値のリストは自動的にList of intになります。

var scores = [90, 85, 100];

空のリテラルには型を指定する

空のリテラルには推論の手がかりがないため、型を自分で追加します。そうしないと、Dartが意図しない型を推測する可能性があります。

var queue = <String>[];

要素の型が引き継がれる

型を指定すると、メソッドは正しい要素の型を返します。List of Stringから読み取った値はStringになり、そのまま使用できます。

List<String> names = ['Ada'];
String first = names.first;

ジェネリクスを入れ子にする

型パラメーターは、必要なだけ深く入れ子にできます。StringからList of intへのMapも完全に有効で、すべてチェックされます。

Map<String, List<int>> grades = {
  'Ada': [90, 85]
};

ジェネリクスと変換

mapのようなメソッドは、パイプライン全体で型を引き継ぎます。intを文字列に変換すると、Iterable of Stringになります。

var labels = [1, 2].map((n) => 'n=$n');

カスタムジェネリックコンテナ

自分で作ったジェネリッククラスも、この仕組みに組み込めます。Stack of Tには、呼び出し側が選んだ任意の要素型を格納できます。

class Stack<T> {
  final _items = <T>[];
  void push(T x) => _items.add(x);
}

最初から最後まで安全

宣言から変換、格納に至るまで、型はわかったまま保たれます。これが、再利用性と完全なチェックを最後まで得られるメリットです。

理解度チェック

Mapは型パラメーターをいくつ受け取りますか?

まとめ

List、Set、Mapに型を指定し、型推論を利用し、空のリテラルに型を指定し、ジェネリクスを入れ子にする方法を学びました。すべての変換で型が安全に引き継がれます。✅

よくある質問

「ジェネリックコレクションの実践」レッスンは無料ですか?

はい。「ジェネリックコレクションの実践」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Dart Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Dart Academyコースには全4レッスンが含まれています。

「ジェネリックコレクションの実践」で何を学びますか?

List、Map、独自コンテナに型を付ける ブラウザで直接実行するハンズオンコードでDart Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Dart Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのDart Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「ジェネリックコレクションの実践」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このDart Academyレッスンでコードを書いて実行できますか?

はい。すべてのDart Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Genericsがdynamicより優れている理由
  2. ジェネリッククラスとジェネリックメソッド
  3. extendsによる境界付き型パラメーター
  4. ジェネリックコレクションの実践
← Dart Academyに戻る