Ответ
Сабскрипт массива в Swift предоставляет краткий синтаксис для доступа к элементам по индексу или диапазону индексов.
Базовое использование:
var numbers = [10, 20, 30, 40, 50]
// Доступ по индексу (Int)
let secondNumber = numbers[1] // 20
// Запись по индексу
numbers[2] = 33 // Теперь массив: [10, 20, 33, 40, 50]
// Доступ по диапазону индексов (Range<Int>)
let slice = numbers[1...3] // [20, 33, 40] (тип ArraySlice<Int>)
Критически важные особенности:
- Проверка границ: Использование индекса вне допустимого диапазона (
0..<count) вызывает фатальную ошибку времени выполнения (crash). -
Безопасный доступ: Рекомендуется использовать безопасные методы:
// Получение первого/последнего элемента (возвращают Optional) let first = numbers.first // Int? let last = numbers.last // Int? // Проверка индекса перед доступом let index = 5 if numbers.indices.contains(index) { let value = numbers[index] }
Создание кастомного безопасного сабскрипта:
extension Array {
subscript(safe index: Int) -> Element? {
// Возвращает элемент, если индекс корректен, иначе nil
return indices.contains(index) ? self[index] : nil
}
}
let safeValue = numbers[safe: 10] // nil, а не crash