Menu
Coddy logo textTech

Срезы массивов. Часть 1

Часть раздела Основы путешествия по Swift на Coddy — урок 73 из 86.

Иногда вам не нужен весь массив целиком — достаточно лишь его части. Swift позволяет легко извлекать подмножество элементов, используя сегментацию массивов с помощью операторов диапазона.

Чтобы получить срез, вы используете диапазон внутри квадратных скобок. Наиболее распространенный подход использует оператор полуоткрытого диапазона (..<), который включает начальный индекс, но исключает конечный индекс:

let numbers = [10, 20, 30, 40, 50]
let slice = numbers[1..<4]
print(slice)  // [20, 30, 40]

Здесь 1..<4 возвращает нам элементы с индексами 1, 2 и 3, но не с индексом 4. Это полезно, когда вы точно знаете, где именно нужно остановиться.

Если вы хотите включить конечный индекс, используйте оператор закрытого диапазона (...):

let letters = ["a", "b", "c", "d", "e"]
let slice = letters[1...3]
print(slice)  // ["b", "c", "d"]

Одна важная деталь: результатом создания среза является ArraySlice, а не обычный Array. Если вам нужен настоящий массив, оберните его в Array():

let original = [1, 2, 3, 4, 5]
let sliced = Array(original[0..<3])
print(sliced)  // [1, 2, 3]
challenge icon

Задание

Легко

Напишите функцию getMiddleElements, которая принимает numbers, start и end и возвращает срез массива от начального индекса до (но не включая) конечного индекса.

Используйте оператор полуоткрытого диапазона (..<), чтобы извлечь указанную часть массива и вернуть ее как обычный массив.

Параметры:

  • numbers ([Int]): Массив для получения среза
  • start (Int): Начальный индекс (включительно)
  • end (Int): Конечный индекс (исключительно)

Возвращает: Массив, содержащий элементы от начального индекса до (но не включая) конечного индекса ([Int])

Пример: Если numbers равен [10, 20, 30, 40, 50, 60], start равен 1, а end равен 4, функция должна вернуть [20, 30, 40].

Шпаргалка

Swift позволяет извлекать часть массива, используя сегментацию массива (array slicing) с операторами диапазона.

Используйте полуоткрытый оператор диапазона (..<), чтобы получить сегмент от начального индекса до конечного индекса (не включая его):

let numbers = [10, 20, 30, 40, 50]
let slice = numbers[1..<4]
print(slice)  // [20, 30, 40]

Используйте закрытый оператор диапазона (...), чтобы включить конечный индекс:

let letters = ["a", "b", "c", "d", "e"]
let slice = letters[1...3]
print(slice)  // ["b", "c", "d"]

Сегментация массива возвращает ArraySlice. Чтобы преобразовать его в обычный Array, оберните его в Array():

let original = [1, 2, 3, 4, 5]
let sliced = Array(original[0..<3])
print(sliced)  // [1, 2, 3]

Попробуйте сами

func getMiddleElements(numbers: [Int], start: Int, end: Int) -> [Int] {
    // Напишите код здесь
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы