Общие вопросы
Смешанные вопросы по 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 и моделирование ошибок.
Открыть разделПрактика
Объясните механизм, из-за которого копирование структуры со ссылочным свойством не делает состояние объекта независимым.
В практической ситуации нужно безопасно получить город пользователя, когда сам пользователь или его адрес может отсутствовать. Определите тип и значение city, не запуская код:
struct Address {
let city: String
}
struct User {
let address: Address?
}
let user: User? = User(address: nil)
let city = user?.address?.city
print(city as Any)
Объясните, как optional chaining влияет на результат.
Что произойдёт при попытке использовать Optional как логическое условие в Swift без явного извлечения?
Объясните механизм: почему значение типа any протокола с associatedtype нельзя использовать через имя его ассоциированного типа?
Разберите вызов изменяющего метода через existential-значение. Какое число напечатает код и почему изменение сохраняется?
Как шаблон перечисления проверяет case и извлекает его связанное значение?
Как в Swift отличить совпадение состояния двух экземпляров класса от того, что это один и тот же объект?
Вызов функции получает значение nil. Определите, на какой операции завершится выполнение и почему:
func greet(_ name: String) -> String {
"Привет, \(name)!"
}
let name: String! = nil
let message = greet(name)
print(message)
При проверке оператором is значения, объявленного базовым классом, что определяет результат: статический тип переменной или динамический тип объекта?
При успешном условительном приведении объекта к типу протокола какой тип получает связанная переменная и что при этом происходит с конкретным типом объекта?
Как оператор равенства сравнивает два Optional и от чего зависит возможность такого сравнения?
В этом фрагменте определите, почему условие с диапазоном совпадает со значением и какой текст напечатает код:
let statusCode = 404
if case 400..<500 = statusCode {
print("ошибка клиента")
} else {
print("другой результат")
}
При наличии двух перегрузок Swift для аргумента типа String — принимающей String и принимающей String? — какая будет вызвана и почему?
Что мешает Swift вывести параметр типа при передаче nil в обобщённую функцию без контекста?
Что именно гарантирует ограничение протокола AnyObject и чего оно не меняет в семантике типа?
За счёт чего optional binding одновременно проверяет nil и меняет тип связанной переменной?
На объект оставили только слабую ссылку. Какое значение напечатает код после выхода из области видимости и почему?
final class Token {}
final class Store {
weak var token: Token?
}
let store = Store()
do {
let token = Token()
store.token = token
print(store.token != nil)
}
print(store.token == nil)
При объявлении функции с возвращаемым типом some Protocol что скрывается от вызывающего кода и чем это отличается от any Protocol?
При передаче значения структуры через inout является ли параметр постоянной ссылкой на исходное хранилище?
На границе вызова функции параметр имеет тип Optional<String>, а передаваемый аргумент — String: каким преобразованием Swift принимает аргумент без явного оборачивания?
Показано 61–80 из 651