Общие вопросы
Смешанные вопросы по Swift.
Открыть разделБаза Hintsage
Язык Swift и разработка приложений в экосистеме Apple.
Темы раздела
Смешанные вопросы по Swift.
Открыть разделТипы, функции, структуры, классы и базовая семантика.
Открыть разделOptionals, value/reference semantics, casting и pattern matching.
Открыть разделProtocols, extensions, associated types и generic constraints.
Открыть разделCollections, closures, map/filter/reduce и sequences.
Открыть разделARC, reference cycles, weak/unowned и время жизни объектов.
Открыть разделasync/await, actors, tasks и безопасность данных.
Открыть разделthrows, Result, defer и моделирование ошибок.
Открыть разделПрактика
Как Swift упаковывает значение структуры при приведении к AnyObject и что происходит с его value semantics?
При вызове generic-функции, у которой параметр типа фигурирует только в ограничении протокола, почему Swift не может вывести этот параметр?
Какие ограничения появляются у existential-значения протокола с требованием, возвращающим Self, по сравнению с generic-параметром?
Практическая ситуация: generic-тип условно соответствует протоколу, который наследует другой протокол. При каких условиях Swift считает этот тип соответствующим родительскому протоколу?
Почему ограниченный extension протокола не позволяет вызвать его метод через existentialное значение, даже если фактический тип удовлетворяет ограничению?
Как Swift определяет доступность соответствия публичного типа публичному протоколу, если оно объявлено во внутреннем extension?
Разберите механизм: что происходит, когда generic-ограничения требуют для одного associated type двух несовместимых конкретных типов?
После специализации generic-типа с условным соответствием протоколу возникает новое соответствие или Swift использует уже объявленное условие?
Разработчик объявил в протоколе только требование чтения свойства, но в реализации сделал свойство доступным для чтения и записи. Почему такая реализация допустима, а обратная замена невозможна?
Объясните механизм: почему условное соответствие generic-типа протоколу нельзя определить обычной проверкой во время выполнения?
Ситуация: generic-тип должен соответствовать протоколу, если его параметр удовлетворяет хотя бы одному из двух протоколов. Как выразить такое условие в Swift?
Ситуация: класс соответствует протоколу с требуемым инициализатором. Зачем реализацию обычно помечают как required?
Разберите последствие требования равенства двух generic-параметров: какие гарантии получает тело функции сверх их общего соответствия протоколу?
Что произойдёт при соответствии типа протоколу, если две ограниченные extensions одновременно предоставляют разные реализации одного требования?
Представьте протокол, у которого associated type ограничен равенством с Self. Как это условие меняет допустимые соответствия конкретных типов?
Разработчик заменил обобщённое требование протокола методом для конкретного типа. Почему соответствие не засчитывается?
Вам дан протокол со статическим требованием. Почему его нельзя вызвать через existentialное значение, хотя generic-функция с параметром, ограниченным этим протоколом, может вызвать то же требование?
Почему один конкретный тип не может выбирать разные associated type в зависимости от generic-контекста вызова?
Может ли generic-метод с дополнительным ограничением служить реализацией неограниченного требования протокола в Swift?
Когда Swift проверяет, что явно указанный associated type удовлетворяет ограничениям протокола?
Показано 401–420 из 651