Общие вопросы
Смешанные вопросы по 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 и моделирование ошибок.
Открыть разделПрактика
Как возвращаемый тип SubSequence у dropFirst влияет на универсальность алгоритмов Collection?
В API условие передают как аргумент, но вычислять его нужно только при обращении внутри функции. Какую роль здесь играет @autoclosure?
Как хеш-таблица внутри Set использует Hashable, чтобы быстро определить наличие элемента?
Какую проблему решает AnySequence, когда API должен скрыть конкретный тип последовательности?
В чём причина недопустимости чтения элемента по endIndex у Collection?
Определите, какой инвариант по числу элементов сохраняет map при успешно завершившемся преобразовании?
Может ли новый массив, полученный через map, изменить состояние объектов из исходного массива?
Как compactMapValues обрабатывает значение, преобразованное в nil, при сохранении типа Dictionary?
Обоснуйте выбор isEmpty вместо проверки count == 0 в обобщённой функции, принимающей Collection.
Опишите, почему ArraySlice может начинаться с индекса исходного массива, а не с нуля.
В библиотечном алгоритме замыкание может бросать ошибку: какую гарантию даёт rethrows функции-обёртке?
При объединении словарей через merge как определяется значение для совпавшего ключа?
В коде ниже один lazy-результат обходят дважды. Сколько раз будет вызвано замыкание преобразования и почему?
let source = [1, 2, 3]
let doubled = source.lazy.map {
print("обработка \($0)")
return $0 * 2
}
print(Array(doubled))
print(Array(doubled))
При подсчёте событий через Dictionary как subscript с default обрабатывает отсутствующий ключ при последующем изменении его значения?
Что означает nil, возвращённый next(), если Element самой Sequence — Optional?
Как статический тип значения определяет вызов метода, добавленного только в расширении протокола Sequence?
Спрогнозируйте результат и объясните причину: нужно создать три независимых контейнера, но массив заполнен одним повторяемым значением.
final class Box {
var value: Int
init(_ value: Int) { self.value = value }
}
var boxes = Array(repeating: Box(0), count: 3)
boxes[0].value = 42
print(boxes.map { $0.value })
Какие ограничения накладывает @Sendable на значения, захваченные замыканием?
В обобщённом алгоритме нужно заменить каждый элемент коллекции на месте, не создавая новый контейнер. Какое требование к типу коллекции делает это возможным?
При попытке отбросить у Sequence больше элементов, чем в ней есть, чем завершится dropFirst и почему?
Показано 461–480 из 651