Основы Dart 2.x (Generics)

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

Пример:

Разберем подробнее:
У нас есть типизированный класс Processor c определенным типом T (универсальным параметром), дальше мы можем использовать наш символ T как обычный тип, например определять переменные этого типа, что мы и сделали если посмотреть на поле T model нашего класса. Далее, при выполнении нашей программы вместо Т будет динамически подставляться конкретный тип на основе входящих данных. То есть поле model будет иметь тип int когда мы передаем в конструкторе число 7 модели процессора ryzen и тип string когда мы передаем значение "i7" в модели процессора core.
- Так же стоит уточнить что в место символа Т в верхнем регистре, можно подставить абсолютно любой, например Х или Е, но обычно используется символ Т от английского слова Type (тип) .
Generics методы
Таким же образом мы можем создать типизированные методы:

Здесь параметр общего типа для first<Т> позволяет использовать аргумент типа Т в нескольких местах:
- Возвращаемый универсальный тип Т нашего метода.
- Аргумент метода List<T>.
- Локальная переменная метода T tmp .
Используйте "дженерики", чтобы получить максимально широкие возможности многократного использования кода, для обеспечения безопасности типов и повышения производительности.

Подборка заметок