Что происходит при вызове функции, объявленной как throwing, если вызывающий код не обрабатывает возможную ошибку?
База Hintsage
Swift Core
Типы, функции, структуры, классы и базовая семантика.
Практика
Вопросы: Swift Core
Объясните механизм выбора реализации метода и определите, какой текст напечатает 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 какое ограничение получает наследник?
После освобождения объекта, на который указывает weak-ссылка, что произойдёт с этой ссылкой и почему?
Почему Swift не позволяет напрямую сравнить два значения, объявленные как any Equatable, хотя каждый конкретный тип поддерживает Equatable?
Когда Swift вычисляет значение параметра по умолчанию при вызове функции?
Что означает lazy для хранимого свойства Swift при первом обращении?
Функция содержит несколько defer в одном и вложенных блоках: как Swift определяет порядок их выполнения при выходе из области видимости?
Разберите ситуацию: инициализатор структуры присваивает значения хранимым свойствам только в одной из ветвей условия. Какое требование Swift нарушено и почему компилятор отклоняет такой инициализатор?
При проверке двух экземпляров класса какой механизм позволяет установить, указывают ли ссылки на один и тот же объект, независимо от содержимого его свойств?
Что произойдёт с willSet и didSet хранимого свойства при присваивании ему начального значения внутри инициализатора?
Каким образом ARC определяет момент освобождения экземпляра класса, если ссылки на него исчезают в разном порядке?
Предскажите вывод программы и объясните, какое состояние разделяют копии замыкания:
func makeCounter() -> () -> Int {
var value = 0
return {
value += 1
return value
}
}
let first = makeCounter()
print(first())
let second = first
print(second())
print(first())
В практической ситуации вызов метода выполняется через необязательный экземпляр: каким станет результат, если экземпляр содержит значение или равен nil?
Показано 21–40 из 50