Generics параметризуют типы/функции плейсхолдерами (T), сохраняя типобезопасность без дублирования кода.
Разбор
- Ограничения:
T: Equatable, T: Collection.
where уточняет требования.
- Associated types в протоколах — «generics протоколов».
- Специализация и инлайнинг помогают производительности.
Пример
func first<T>(_ a: [T]) -> T? { a.first }
Итог
Generics — переиспользование алгоритмов без потери типов.