Выбор ответа Middle Протоколы, POP и дженерики обновлено
Условное соответствие протоколу
Вопрос
Что означает extension Array: Summable where Element: Numeric?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Array соответствует Summable, только если его элементы числовые. Это conditional conformance (Swift 4.1+): соответствие действует только при выполнении условия.
Варианты ответа
- Все массивы соответствуют
Summable, аNumericлишь подсказка - Элементы массива автоматически станут
Numericпри добавлении ArrayсоответствуетSummable, только если его элементы числовыеправильный ответ- Такой синтаксис запрещён для типов стандартной библиотеки
Разбор
Это conditional conformance (Swift 4.1+): соответствие действует только при выполнении условия. Так устроено, например, Array: Equatable where Element: Equatable. Массив строк Summable не станет. Расширять типы стандартной библиотеки своими протоколами можно, это обычная практика.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Протокол с associatedtype как тип параметра
Следующий вопрос
Метод из расширения протокола: какая реализация вызовется