Массивы (списки) в Swift 5.9: подробное руководство
Массивы (списки) в Swift
Представь, что у тебя есть рюкзак, в который можно положить много разных вещей: яблоки, книги, игрушки. Только в программировании мы кладем в такой «рюкзак» числа, слова или другие данные. Этот «рюкзак» называется массивом (или списком).
Массив помогает хранить много значений в одной переменной. Например, список всех фруктов, которые привезли в магазин, или высоты, на которые поднялся альпинист.
Как создать массив
В Swift массив создается с помощью квадратных скобок [ ]. Все элементы внутри массива должны быть одного типа (например, только числа или только строки).
// Массив строк (слова)
let фрукты: [String] = ["Яблоко", "Банан", "Апельсин"]
// Массив целых чисел
let числа: [Int] = [10, 20, 30, 40]
// Массив с дробными числами
let высоты: [Double] = [100.5, 200.0, 150.3]
Если не указывать тип, Swift сам догадается:
var цвета = ["Красный", "Синий", "Зеленый"] // Swift поймет, что это [String]
Доступ к элементам массива
У каждого элемента в массиве есть свой номер — индекс. Индексы начинаются с 0!
var фрукты = ["Яблоко", "Банан", "Апельсин"]
print(фрукты[0]) // Выведет: Яблоко
print(фрукты[1]) // Выведет: Банан
print(фрукты[2]) // Выведет: Апельсин
Изменение массива
Если массив создан с помощью var (изменяемый), можно менять, добавлять или удалять элементы.
var корзина = ["Груша", "Лимон"]
корзина[0] = "Киви" // Заменили "Грушу" на "Киви"
print(корзина) // ["Киви", "Лимон"]
корзина.append("Виноград") // Добавили в конец
print(корзина) // ["Киви", "Лимон", "Виноград"]
корзина.remove(at: 1) // Удалили элемент с индексом 1 ("Лимон")
print(корзина) // ["Киви", "Виноград"]
Количество элементов и проверка
let числа = [5, 10, 15]
print(числа.count) // Выведет: 3 (количество элементов)
if числа.isEmpty {
print("Массив пуст")
} else {
print("В массиве \(числа.count) элемента")
}
Перебор массива (цикл for)
Чтобы пройтись по всем элементам, используй цикл for:
let фрукты = ["Яблоко", "Банан", "Апельсин"]
for фрукт in фрукты {
print("Сегодня у нас есть: \(фрукт)")
}
// Выведет:
// Сегодня у нас есть: Яблоко
// Сегодня у нас есть: Банан
// Сегодня у нас есть: Апельсин
Разбор типичных задач
Задача 1: Фрукты в магазине
Владелец магазина записывает фрукты в массив. Нужно вывести их все.
var поставка = ["Яблоко", "Груша", "Банан", "Киви"]
print("Фрукты, полученные за неделю:")
for фрукт in поставка {
print("- \(фрукт)")
}
// Выведет:
// - Яблоко
// - Груша
// - Банан
// - Киви
Задача 2: Робот-сортировщик
Робот отбирает детали с номерами больше 100.
let детали = [45, 120, 78, 200, 33, 150]
print("Детали для следующего этапа:")
for номер in детали {
if номер > 100 {
print("Деталь №\(номер) подходит")
}
}
// Выведет:
// Деталь №120 подходит
// Деталь №200 подходит
// Деталь №150 подходит
Задача 3: Запас материалов
Повар заметил ошибку: во втором пункте списка (индекс 1) нужно удвоить количество хлеба.
var запасы = [10, 5, 8] // Яйца, Хлеб, Молоко
запасы[1] = запасы[1] * 2 // Удвоили хлеб
print("Новый запас: \(запасы)") // [10, 10, 8]
Задача 4: Суп в школе
Помоги повару посчитать общее количество порций супа за неделю.
let порции = [30, 25, 40, 35, 20] // Пн, Вт, Ср, Чт, Пт
var всего = 0
for порция in порции {
всего += порция
}
print("Всего порций супа за неделю: \(всего)") // 150
Задача 5: Юный альпинист
Вася записывал высоту каждый день. Найди моменты, когда высота была больше 2000 метров.
let высоты = [1500, 2100, 1800, 2500, 1900]
print("Дни, когда высота больше 2000 м:")
for (индекс, высота) in высоты.enumerated() {
if высота > 2000 {
print("День \(индекс + 1): \(высота) м")
}
}
// Выведет:
// День 2: 2100 м
// День 4: 2500 м
Частые ошибки новичков
- Выход за границы массива: Попытка обратиться к индексу, которого нет. Например, если в массиве 3 элемента (индексы 0, 1, 2), то
массив[3]вызовет ошибку. Всегда проверяйcount. - Путаница с индексами: Помни, что первый элемент — это индекс 0, второй — 1 и т.д.
- Изменение константного массива (let): Если массив объявлен через
let, его нельзя изменить. Используйvar. - Разные типы данных: Нельзя смешивать строки и числа в одном массиве без специального объявления.
Итоговый пример: Сбор урожая
Фермер собрал урожай яблок. Каждый день он записывал количество собранных килограммов. Помоги фермеру:
- Найти общий вес урожая
- Найти день с максимальным сбором
var урожай = [120, 95, 150, 80, 200] // кг за 5 дней
var общийВес = 0
var максимальныйСбор = урожай[0]
var деньМаксимума = 1
for (индекс, вес) in урожай.enumerated() {
общийВес += вес
if вес > максимальныйСбор {
максимальныйСбор = вес
деньМаксимума = индекс + 1
}
}
print("Общий вес урожая: \(общийВес) кг")
print("Максимальный сбор был в день \(деньМаксимума): \(максимальныйСбор) кг")
// Выведет:
// Общий вес урожая: 645 кг
// Максимальный сбор был в день 5: 200 кг
Массивы — это основа для хранения списков данных. Тренируйся создавать, изменять и перебирать массивы, и ты быстро освоишь эту тему!