Метод reduce
Часть раздела Логика и потоки выполнения путешествия по GDScript на Coddy. Урок 62 из 78.
reduce() объединяет все элементы массива в одно значение: сумму, произведение, наибольший элемент, предложение.
var numbers = [1, 2, 3, 4]
var total = numbers.reduce(func(acc, n): return acc + n, 0)
print(total)10Он принимает два аргумента: функцию и начальное значение, здесь — 0. Функция получает текущий результат, называемый аккумулятором (acc), и следующий элемент. Возвращаемое ею значение становится новым аккумулятором:
accначинается с00 + 1— это1,1 + 2— это3,3 + 3— это6,6 + 4— это10- после последнего элемента
reduce()возвращает аккумулятор:10
Для произведения начни с 1: numbers.reduce(func(acc, n): return acc * n, 1) равно 24.
Без начального значения первый элемент становится начальным, а функция начинает выполняться со второго элемента. Это подходит для поиска наибольшего элемента:
var biggest = [4, 9, 2].reduce(func(a, b): return a if a > b else b)
print(biggest) # 9Для пустого массива без начального значения reduce() возвращает null, поэтому указывай начальное значение, если массив может быть пустым.
Аккумулятор может иметь любой тип. Если начальное значение — "", из первых букв формируется строка:
var words = ["game", "over"]
print(words.reduce(func(acc, w): return acc + w[0], "")) # goЗадание
ЛегкоПрограмма считывает одну строку целых чисел, разделённых запятыми, и сохраняет их в массиве numbers. Эта часть уже написана.
Используя reduce() для каждого из них, выведите три строки:
- сумму чисел
- их произведение
- наибольшее число (запишите сравнение в лямбда-функции; не вызывайте
max())
Всегда есть хотя бы одно число. Для входных данных 3,7,2,8,4 вывод будет таким:
24
1344
8Попробуйте сами
extends Node
func _ready():
var numbers := []
for part in OS.read_string_from_stdin().split(","):
numbers.append(int(part))
# Выведите сумму, произведение и наибольшее число, используя для каждого reduce()
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и потоки выполнения
1Строки: углублённое изучение
Методы строкПоиск в строкахЗамена и обрезка пробеловРазделение и объединениеПовторение — проверка имени пользователя4Словари. Часть 2
Вложенные словариМассивы словарейОбъединение словарейКопирование словарейПовторение — подсчёт частоты10Продвинутые функции
Возврат нескольких значенийЛямбда-функции. Часть 1Лямбда-функции. Часть 2Повторение — сортировка с помощью лямбда-функцииРекурсивные функции. Часть 1Рекурсивные функции. Часть 2Повторение — сумма вложенного массива13Система управления запасами
Обзор проектаДобавление товара2Продвинутое управление ветвлением
Сопоставление с переменнымиУсловия в шаблонахШаблоны массивовШаблоны словарейПроверка принадлежностиИтоги — парсер команд5Приложение «Телефонная книга»
Показать менюДобавить контакт8Менеджер успеваемости студентов
Обзор проектаДобавить студента11Функции высшего порядка
Метод mapМетод filterМетод reduceany и allПовторение — проверка адреса электронной почтыПовторение — обработка чисел3Многомерные массивы
Основы двумерных массивовДоступ к элементам двумерного массиваВложенные циклы с двумерными массивамиПовторение: двумерные массивыРваные массивыТипичные шаблоны работы с двумерными массивамиПовторение: игровое поле6Множества и словари
Что такое множество?Словарь как множествоДобавление и удалениеОбъединение и пересечениеРазность множествПовторение — удаление дубликатовПотренируйтесь самостоятельно: Онлайн-компилятор GDScript