Срезы массивов. Часть 2
Часть раздела Основы путешествия по Swift на Coddy — урок 74 из 86.
Swift предоставляет удобный сокращенный синтаксис для создания срезов от начала или до конца массива. Вместо того чтобы явно указывать 0 или последний индекс, вы можете оставить одну сторону диапазона пустой.
Чтобы сделать срез от начала массива до определенного индекса, опустите начальное значение:
let numbers = [10, 20, 30, 40, 50]
let firstThree = numbers[..<3]
print(firstThree) // [10, 20, 30]Аналогично, чтобы сделать срез от определенного индекса до конца, опустите конечное значение:
let numbers = [10, 20, 30, 40, 50]
let fromIndex2 = numbers[2...]
print(fromIndex2) // [30, 40, 50]Вы также можете использовать версию с закрытым диапазоном, чтобы включить определенную начальную точку:
let letters = ["a", "b", "c", "d", "e"]
let upToIndex3 = letters[...3]
print(upToIndex3) // ["a", "b", "c", "d"]Эти односторонние диапазоны делают ваш код чище, когда вам нужны первые несколько элементов или всё после определённой точки. Не забудьте обернуть результат в Array(), если вам нужен обычный массив вместо ArraySlice.
Задание
ЛегкоНапишите функцию splitArray, которая принимает numbers и index и возвращает все элементы от заданного индекса до конца массива.
Используйте односторонний оператор диапазона (...), чтобы сделать срез от указанного индекса до конца, и верните результат в виде обычного массива.
Параметры:
numbers([Int]): Массив для срезаindex(Int): Начальный индекс (включительно)
Возвращает: Массив, содержащий все элементы от заданного индекса до конца массива ([Int])
Пример: Если numbers равен [5, 10, 15, 20, 25, 30], а index равен 3, функция должна вернуть [20, 25, 30].
Шпаргалка
Swift предоставляет сокращенный синтаксис для создания срезов массивов от начала или до конца, оставляя одну сторону диапазона пустой.
Чтобы сделать срез от начала до определенного индекса, опустите начальное значение:
let numbers = [10, 20, 30, 40, 50]
let firstThree = numbers[..<3] // [10, 20, 30]Чтобы сделать срез от определенного индекса до конца, опустите конечное значение:
let numbers = [10, 20, 30, 40, 50]
let fromIndex2 = numbers[2...] // [30, 40, 50]Используйте версию с закрытым диапазоном, чтобы включить определенный конечный индекс:
let letters = ["a", "b", "c", "d", "e"]
let upToIndex3 = letters[...3] // ["a", "b", "c", "d"]Односторонние диапазоны возвращают ArraySlice. Оберните результат в Array(), чтобы преобразовать его в обычный массив:
let regularArray = Array(numbers[2...])Попробуйте сами
func splitArray(numbers: [Int], index: Int) -> [Int] {
// Напишите код здесь
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Операторы. Часть 1
Арифметические операторыОператор остатка от деленияСоставное присваиваниеПовторение: Простая математикаОператоры сравнения7Основы ввода-вывода
Функция PrintИнтерполяция строкВвод через ReadLineПреобразование типовПовторение — до 120Повторение — True или False10Функции
Объявление функцииПараметры и аргументыВозвращаемые значенияМетки аргументовПовторение: функция SigmaПовторение: функция валидацииЗначения по умолчанию13Итерирование по последовательностям
Итерирование по элементамМетод enumerateИтерирование по строкам, ч. 1Итерирование по строкам, ч. 22Переменные
Let против VarАннотации типовЧислаСтрокиBooleanСоглашения об именованииИтоги — Инициализация переменных5Операторы. Часть 2
Логические операторы. Часть 1Логические операторы. Часть 2Повторение: простая логикаЛогические операторы. Часть 3Тернарный оператор8Калькулятор разделения счета
Приветственное сообщениеПолучение ввода14Массивы: Продвинутый уровень
Срезы массивов. Часть 1Срезы массивов. Часть 2Операторы последовательностейМетод Contains3Опционалы
Что такое опционалыРазвертывание с помощью if letGuard letОператор объединения с nilИтоги — безопасное развертывание6Принятие решений
Оператор IfКонструкция If - ElseПовторение — Простой калькуляторОператор SwitchSwitch с диапазонами9Циклы
Цикл For-InЦикл WhileЦикл Repeat-WhileBreakContinueПовторение: ФакториалДиапазоны в циклахВложенные циклыПовторение: Динамический ввод