Учебники

Дартс Программирование — Дженерики

Дарт — необязательный типизированный язык . Коллекции в Dart по умолчанию неоднородны. Другими словами, одна коллекция Dart может содержать значения различных типов. Тем не менее, коллекция Dart может быть сделана для хранения однородных значений. Концепция Generics может быть использована для достижения того же.

Использование Generics налагает ограничение на тип данных значений, которые могут содержаться в коллекции. Такие коллекции называются типобезопасными коллекциями. Безопасность типов — это функция программирования, которая гарантирует, что блок памяти может содержать данные только определенного типа.

Все коллекции Dart поддерживают реализацию безопасности типов посредством обобщений. Пара угловых скобок, содержащих тип данных, используется для объявления безопасной для типов коллекции. Синтаксис для объявления типобезопасной коллекции приведен ниже.

Синтаксис

Collection_name <data_type> identifier= new Collection_name<data_type> 

Типобезопасные реализации List, Map, Set и Queue приведены ниже. Эта функция также поддерживается всеми реализациями вышеупомянутых типов коллекций.

Пример: общий список

Live Demo

 пустая функция() { 
    List <String> logTypes = new List <String> (); 
    logTypes.add ( "ВНИМАНИЕ"); 
    logTypes.add ( "ERROR"); 
    logTypes.add ( "INFO");  
   
    // перебираем список 
    for (строковый тип в logTypes) { 
       печать (тип); 
    } 
 }

Он должен произвести следующий вывод

WARNING 
ERROR 
INFO

Попытка вставить значение, отличное от указанного типа, приведет к ошибке компиляции. Следующий пример иллюстрирует это.

пример

Live Demo

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); 
   } 
} 

Он должен произвести следующий вывод

1                                                                                     
ERROR                                                                             
INFO

Пример: общий набор

Live Demo

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); 
   } 
} 

Он должен произвести следующий вывод

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

Пример: общая очередь

Live Demo

 импорт «дартс: коллекция»; 
 пустая функция() { 
    Queue <int> queue = новая очередь <int> (); 
    print ("Реализация по умолчанию $ {queue.runtimeType}");  
    queue.addLast (10); 
    queue.addLast (20); 
    queue.addLast (30); 
    queue.addLast (40); 
    queue.removeFirst ();  
   
    для (int нет в очереди) { 
       печать (нет); 
    } 
 }

Он должен произвести следующий вывод

Default implementation ListQueue<int> 
20 
30 
40

Общая карта

Безопасное объявление типа определяет типы данных —

  • Ключ
  • Значение

Синтаксис

Map <Key_type, value_type>

пример

Live Demo

 пустая функция() { 
    Карта <String, String> m = {'name': 'Tom', 'Id': 'E1001'}; 
    print ('Карта: $ {m}'); 
 } 

Он должен произвести следующий вывод