Dart-programming-generics

提供:Dev Guides
移動先:案内検索

Dartプログラミング-ジェネリック

Dartは*オプションで型指定された言語*です。 Dartのコレクションは、デフォルトでは異種です。 つまり、1つのDartコレクションでさまざまなタイプの値をホストできます。 ただし、同種の値を保持するためにDartコレクションを作成できます。 ジェネリックの概念は、同じことを達成するために使用できます。

Genericsを使用すると、コレクションに含めることができる値のデータ型に制限が適用されます。 このようなコレクションは、タイプセーフコレクションと呼ばれます。 タイプセーフは、メモリブロックに特定のデータタイプのデータのみを含めることができるようにするプログラミング機能です。

すべてのDartコレクションは、ジェネリックを介したタイプセーフ実装をサポートしています。 データ型を含む山括弧のペアを使用して、タイプセーフなコレクションを宣言します。 タイプセーフなコレクションを宣言するための構文は次のとおりです。

構文

Collection_name <data_type> identifier= new Collection_name<data_type>

List、Map、Set、およびQueueのタイプセーフな実装を以下に示します。 この機能は、上記のコレクションタイプのすべての実装でもサポートされています。

例:汎用リスト

void main() {
   List <String> logTypes = new List <String>();
   logTypes.add("WARNING");
   logTypes.add("ERROR");
   logTypes.add("INFO");

  //iterating across list
   for (String type in logTypes) {
      print(type);
   }
}

次の output が生成されるはずです-

WARNING
ERROR
INFO

指定されたタイプ以外の値を挿入しようとすると、コンパイルエラーが発生します。 次の例はこれを示しています。

void main() {
   List <String> logTypes = new List <String>();
   logTypes.add(1);
   logTypes.add("ERROR");
   logTypes.add("INFO");

  //iterating across list
   for (String type in logTypes) {
      print(type);
   }
}

次の output が生成されるはずです-

1
ERROR
INFO

例:汎用セット

void main() {
   Set <int>numberSet = new  Set<int>();
   numberSet.add(100);
   numberSet.add(20);
   numberSet.add(5);
   numberSet.add(60);
   numberSet.add(70);

  //numberSet.add("Tom");
   compilation error;
   print("Default implementation  :${numberSet.runtimeType}");

   for(var no in numberSet) {
      print(no);
   }
}

次の output が生成されるはずです-

Default implementation :_CompactLinkedHashSet<int>
100
20
5
60
70

例:汎用キュー

import 'dart:collection';
void main() {
   Queue<int> queue = new Queue<int>();
   print("Default implementation ${queue.runtimeType}");
   queue.addLast(10);
   queue.addLast(20);
   queue.addLast(30);
   queue.addLast(40);
   queue.removeFirst();

   for(int no in queue){
      print(no);
   }
}

次の output が生成されるはずです-

Default implementation ListQueue<int>
20
30
40

汎用マップ

タイプセーフマップ宣言は、データ型を指定します-

  • キー

構文

Map <Key_type, value_type>

void main() {
   Map <String,String>m={'name':'Tom','Id':'E1001'};
   print('Map :${m}');
}

次の output が生成されるはずです-

Map :{name: Tom, Id: E1001}