Выбор ответа Middle Протоколы, POP и дженерики обновлено

Условное соответствие протоколу

Вопрос

Что означает extension Array: Summable where Element: Numeric?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Array соответствует Summable, только если его элементы числовые. Это conditional conformance (Swift 4.1+): соответствие действует только при выполнении условия.

Варианты ответа

  1. Все массивы соответствуют Summable, а Numeric лишь подсказка
  2. Элементы массива автоматически станут Numeric при добавлении
  3. Array соответствует Summable, только если его элементы числовыеправильный ответ
  4. Такой синтаксис запрещён для типов стандартной библиотеки

Разбор

Это conditional conformance (Swift 4.1+): соответствие действует только при выполнении условия. Так устроено, например, Array: Equatable where Element: Equatable. Массив строк Summable не станет. Расширять типы стандартной библиотеки своими протоколами можно, это обычная практика.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.