При работе с изменяемой Collection сохранённый индекс используется после мутации: какое правило определяет, можно ли к нему обращаться?
База 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
Вам нужно пропустить обработку одного элемента при обходе массива. Какой вывод даст код и что именно прекращает return внутри замыкания?
let numbers = [1, 2, 3, 4]
numbers.forEach { number in
if number == 3 {
return
}
print(number)
}
print("готово")
Разберите ошибку эксклюзивного доступа в Swift: почему этот код нельзя безопасно скомпилировать и как изменить его, сохранив результат?
Объясните механизм: чем захват переменной через список захвата отличается от обычного захвата, если значение изменилось после создания замыкания?
В какой ситуации для построения коллекции стоит выбрать reduce(into:) вместо reduce?
Разберите, почему map у Dictionary в Swift возвращает массив, а не Dictionary.
Как порядок элементов Sequence влияет на результат reduce при неассоциативной операции?
В Swift две переменные содержат один Array: что происходит с памятью при изменении одной из них?
Как Swift управляет временем жизни переменной, захваченной escaping-замыканием?
Сравните порядок map→filter и filter→map: при каком условии результат не изменится?
Можно ли в Swift гарантировать повторный обход любого значения типа Sequence?
Что изменится в моменте выполнения преобразований, если цепочку map и filter сделать lazy?
Что мешает протоколу наследоваться от конкретной специализации протокола с primary associated type?
Тип соответствует двум протоколам с одноимёнными associated type. Как Swift различает эти требования?
Что гарантирует требование базового класса в объявлении протокола?
Рассмотрите рекурсивный протокол для узлов дерева: каким образом ограничение associated type тем же протоколом позволяет generic-коду обходить дочерние узлы без type erasure?
Как generic-код доказывает, что associated type параметра поддерживает дополнительный протокол?
В структуре метод протокола изменяет её состояние. Почему требование должно быть помечено mutating, даже если реализация класса не меняет ссылку?
Чем отличается ограничение associated type через AnyObject от ограничения самого протокола через AnyObject?
Разберите последствие наследования соответствия: почему Child не может получить отдельное соответствие Identified с другим associatedtype?
protocol Identified {
associatedtype ID: Hashable
var id: ID { get }
}
class Base: Identified {
let id: Int
init(id: Int) { self.id = id }
}
class Child: Base { }
extension Child: Identified {
typealias ID = String
var id: String { "child" }
}
Показано 141–160 из 301