Метод map
Часть раздела Логика и потоки выполнения путешествия по GDScript на Coddy. Урок 60 из 78.
Функция высшего порядка — это функция, которая принимает другую функцию в качестве аргумента. У массивов есть несколько таких функций, и map() — первая.
map() вызывает функцию для каждого элемента массива и возвращает новый массив с результатами в том же порядке:
func square(n):
return n * nvar numbers = [1, 2, 3, 4, 5]
var squares = numbers.map(square)
print(squares)[1, 4, 9, 16, 25]Передай функцию по её имени, без скобок: map(square) передаёт функцию, а map(square()) попытался бы вызвать её сразу. Затем map() вызывает её один раз для каждого элемента: 1 становится 1, 2 становится 4, 3 становится 9 и так далее.
Для короткого вычисления лямбда позволяет обойтись без отдельной функции:
var squares = numbers.map(func(n): return n * n)Новый массив имеет тот же размер, что и исходный, а сам массив numbers не изменяется. Результаты могут иметь тип, отличный от типа элементов:
var words = ["apple", "kiwi", "banana"]
print(words.map(func(w): return w.length()))[5, 4, 6]map() возвращает обычный Array, даже если вызвать его для типизированного массива, например Array[int]. Сохранение результата в переменную типа Array[int] приведёт к остановке программы с ошибкой, поэтому сохраняй его в нетипизированную переменную или в Array.
split() возвращает PackedStringArray, у которого нет map(). Сначала преобразуй его в Array: Array("1,2,3".split(",")).map(func(s): return int(s)) возвращает [1, 2, 3].
Задание
ЛегкоНапиши функцию с именем convert_to_uppercase, которая принимает массив строк strings и возвращает новый массив, в котором каждая строка записана в верхнем регистре.
Используй map() с лямбда-функцией, без циклов. Например, convert_to_uppercase(["hello", "world"]) возвращает ["HELLO", "WORLD"].
Тесты сами вызывают convert_to_uppercase(). Не вызывай эту функцию и ничего не выводи.
Попробуйте сами
func convert_to_uppercase(strings: Array[String]):
# Напишите код здесь
pass
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и потоки выполнения
1Строки: углублённое изучение
Методы строкПоиск в строкахЗамена и обрезка пробеловРазделение и объединениеПовторение — проверка имени пользователя4Словари. Часть 2
Вложенные словариМассивы словарейОбъединение словарейКопирование словарейПовторение — подсчёт частоты10Продвинутые функции
Возврат нескольких значенийЛямбда-функции. Часть 1Лямбда-функции. Часть 2Повторение — сортировка с помощью лямбда-функцииРекурсивные функции. Часть 1Рекурсивные функции. Часть 2Повторение — сумма вложенного массива13Система управления запасами
Обзор проектаДобавление товара2Продвинутое управление ветвлением
Сопоставление с переменнымиУсловия в шаблонахШаблоны массивовШаблоны словарейПроверка принадлежностиИтоги — парсер команд5Приложение «Телефонная книга»
Показать менюДобавить контакт8Менеджер успеваемости студентов
Обзор проектаДобавить студента11Функции высшего порядка
Метод mapМетод filterМетод reduceany и allПовторение — проверка адреса электронной почтыПовторение — обработка чисел3Многомерные массивы
Основы двумерных массивовДоступ к элементам двумерного массиваВложенные циклы с двумерными массивамиПовторение: двумерные массивыРваные массивыТипичные шаблоны работы с двумерными массивамиПовторение: игровое поле6Множества и словари
Что такое множество?Словарь как множествоДобавление и удалениеОбъединение и пересечениеРазность множествПовторение — удаление дубликатовПотренируйтесь самостоятельно: Онлайн-компилятор GDScript