Map
Часть раздела Логика и управление потоком путешествия по Swift на Coddy — урок 23 из 56.
map принимает замыкание и применяет его к каждому элементу, возвращая новый массив с результатами. Новый массив имеет ту же длину, что и исходный.
let nums = [1, 2, 3, 4]
let doubled = nums.map { $0 * 2 }
print(doubled) // [2, 4, 6, 8]$0 — это сокращенная запись для первого параметра замыкания. Полная форма явно указывает имя параметра и тип возвращаемого значения:
let doubled = nums.map { (n: Int) -> Int in
return n * 2
}map также может изменять тип элементов. Отображение [Int] через замыкание, которое возвращает String, дает вам [String]:
let labels = nums.map { "#\($0)" }
print(labels) // ["#1", "#2", "#3", "#4"]Задание
ЛегкоПрочитайте одну строку ввода: список целых чисел, разделенных запятыми (температуры в Фаренгейтах).
Преобразуйте каждое значение в градусы Цельсия, используя формулу C = (F - 32) * 5 / 9 в целочисленной арифметике (отбрасывая дробную часть, без десятичных знаков). Выведите на отдельных строках:
- Температуры в градусах Цельсия, объединенные через
, - По одной метке для каждой температуры с префиксом
F=<f> C=<c>, объединенные через;
Используйте map для обеих строк.
Для входных данных 32,212,98,0 вывод будет следующим:
0,100,36,-17
F=32 C=0;F=212 C=100;F=98 C=36;F=0 C=-17Шпаргалка
map применяет замыкание к каждому элементу и возвращает новый массив той же длины:
let nums = [1, 2, 3, 4]
let doubled = nums.map { $0 * 2 } // [2, 4, 6, 8]$0 — это сокращенная запись для первого параметра замыкания. Явная форма:
let doubled = nums.map { (n: Int) -> Int in
return n * 2
}map может изменять тип элементов (например, [Int] → [String]):
let labels = nums.map { "#\($0)" } // ["#1", "#2", "#3", "#4"]Попробуйте сами
let f = readLine()!.components(separatedBy: ",").map { Int($0)! }
// TODO: строка 1 = значения Цельсия, объединенные через ","
// TODO: строка 2 = метки "F=<f> C=<c>", объединенные через ";"
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Строки в деталях
Подсчет и индексыРегистр и удаление пробеловПоиск в строкахРазделение и объединениеЗамена подстрокИтоги — Проверка имени пользователя4Множества
Создание множествОбъединение и пересечениеРазность и симметрическая разностьПодмножество и надмножествоИтоги — Фильтр тегов7Проект — Трекер привычек
Обзор проектаОтметить выполнение10Проект — Движок викторины
Обзор проектаЗадаем вопросы2Диапазоны и шаги
Закрытые и полуоткрытыеШагМетоды диапазоновДиапазоны в SwitchИтоги: Сетка календаря