Как контекст объявления влияет на тип целочисленного литерала в Swift?
База Hintsage
Программирование Swift
Язык Swift и разработка приложений в экосистеме Apple.
Темы раздела
Выберите подраздел
- 0 вопросов
Общие вопросы
Смешанные вопросы по Swift.
Открыть раздел - 50 вопросов
Swift Core
Типы, функции, структуры, классы и базовая семантика.
Открыть раздел - 49 вопросов
Optionals и система типов
Optionals, value/reference semantics, casting и pattern matching.
Открыть раздел - 50 вопросов
Протоколы и generics
Protocols, extensions, associated types и generic constraints.
Открыть раздел - 50 вопросов
Коллекции и функциональный стиль
Collections, closures, map/filter/reduce и sequences.
Открыть раздел - 50 вопросов
ARC и память
ARC, reference cycles, weak/unowned и время жизни объектов.
Открыть раздел - 50 вопросов
Конкурентность
async/await, actors, tasks и безопасность данных.
Открыть раздел - 2 вопроса
Обработка ошибок
throws, Result, defer и моделирование ошибок.
Открыть раздел
Практика
Вопросы: Программирование Swift
У вас есть базовый класс с обязательным инициализатором, а наследник объявляет собственный designated-инициализатор. Какую гарантию Swift проверяет через required в этом коде?
class Base {
required init() {}
}
class Child: Base {
let value: Int
init(value: Int) {
self.value = value
}
}
Что определяет метку аргумента функции при её вызове в Swift?
Какое ограничение Swift не позволяет добавить хранимое свойство в extension уже объявленного типа?
Значение произвольного типа сохранили в Any. Как Swift определяет, удастся ли безопасно извлечь его обратно в конкретный тип?
В публичной структуре все хранимые свойства объявлены публичными, но внешний модуль не может вызвать автоматически созданный поименованный инициализатор. Какое правило Swift объясняет это поведение?
Функция возвращает результат, который вызывающий код намеренно игнорирует: как в Swift выразить это намерение без предупреждения компилятора?
Как меняется контракт протокола после добавления ограничения AnyObject?
Наблюдается следующий код. Какой результат напечатает программа и почему второй вызов не создаёт частично инициализированный экземпляр?
struct Port {
let number: Int
init?(number: Int) {
guard (1...65535).contains(number) else { return nil }
self.number = number
}
}
let valid = Port(number: 443)
let invalid = Port(number: 0)
print(valid != nil, invalid == nil)
Зачем рекурсивному перечислению Swift требуется пометка indirect?
Какую роль играет явное обращение к self внутри escaping-замыкания Swift?
Что происходит при вызове функции, объявленной как throwing, если вызывающий код не обрабатывает возможную ошибку?
Объясните механизм выбора реализации метода и определите, какой текст напечатает Swift:
protocol Describable {}
extension Describable {
func describe() -> String { "extension" }
}
final class Item: Describable {
func describe() -> String { "class" }
}
let value: any Describable = Item()
print(value.describe())
В классе convenience-инициализатор пытается напрямую вызвать инициализатор суперкласса. Какое правило Swift нарушено?
Что изменится для автоматически созданного поименованного инициализатора структуры после добавления собственного инициализатора в её основное объявление?
При наследовании класса какой вид метода типа — static или class — позволяет позднее переопределение в наследнике?
Разберите ситуацию: во время длительного доступа к значению через параметр inout тот же объект читается другим способом. Почему Swift может завершить выполнение ошибкой эксклюзивного доступа?
Рассмотрите функцию, которая никогда не возвращает управление обычным путём: какой специальный тип результата позволяет Swift корректно использовать её вызов в выражениях?
В практической ситуации параметр функции помечен @autoclosure: в какой момент вычислится переданное выражение?
При объявлении метода класса как final какое ограничение получает наследник?
Показано 261–280 из 301