any и all
Часть раздела Логика и потоки выполнения путешествия по GDScript на Coddy. Урок 63 из 78.
any() и all() задают вопрос, на который можно ответить «да» или «нет», обо всём массиве. Обе функции принимают функцию, которая возвращает true или false для одного элемента:
any()возвращаетtrue, если функция возвращаетtrueхотя бы для одного элемента.all()возвращаетtrue, если функция возвращаетtrueдля каждого элемента.
var enemy_hp = [30, 0, 12]
print(enemy_hp.any(func(hp): return hp == 0))
print(enemy_hp.all(func(hp): return hp > 0))true
falseУ одного врага 0 HP, поэтому any() равно true, а этот же враг делает all() равным false.
Обе функции останавливаются, как только ответ становится известен: any() при первом true, all() при первом false. Они работают и с именованными функциями, например numbers.all(is_even).
Для пустого массива any() возвращает false, потому что ни один элемент не проходит проверку, а all() возвращает true, потому что ни один элемент не проваливает проверку.
Используй их в условии вместо цикла с переменной-флагом:
var inventory = ["sword", "key", "rope"]
if inventory.any(func(item): return item == "key"):
print("The door opens")Задание
ЛегкоПрограмма считывает одну строку с оценками, разделёнными запятыми, и сохраняет их в массиве numbers. Эта часть уже написана.
Выведите две строки:
Any perfect:, за которым следуетtrue, если хотя бы одна оценка равна100, в противном случаеfalseAll passed:, за которым следуетtrue, если каждая оценка не меньше50, в противном случаеfalse
Используйте any() для первой строки и all() для второй. Для ввода 100,75,40 вывод будет таким:
Any perfect: true
All passed: falseПопробуйте сами
extends Node
func _ready():
var numbers := []
for part in OS.read_string_from_stdin().split(","):
numbers.append(int(part))
# Выведите две строки с помощью any() и all()
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и потоки выполнения
1Строки: углублённое изучение
Методы строкПоиск в строкахЗамена и обрезка пробеловРазделение и объединениеПовторение — проверка имени пользователя4Словари. Часть 2
Вложенные словариМассивы словарейОбъединение словарейКопирование словарейПовторение — подсчёт частоты10Продвинутые функции
Возврат нескольких значенийЛямбда-функции. Часть 1Лямбда-функции. Часть 2Повторение — сортировка с помощью лямбда-функцииРекурсивные функции. Часть 1Рекурсивные функции. Часть 2Повторение — сумма вложенного массива13Система управления запасами
Обзор проектаДобавление товара2Продвинутое управление ветвлением
Сопоставление с переменнымиУсловия в шаблонахШаблоны массивовШаблоны словарейПроверка принадлежностиИтоги — парсер команд5Приложение «Телефонная книга»
Показать менюДобавить контакт8Менеджер успеваемости студентов
Обзор проектаДобавить студента11Функции высшего порядка
Метод mapМетод filterМетод reduceany и allПовторение — проверка адреса электронной почтыПовторение — обработка чисел3Многомерные массивы
Основы двумерных массивовДоступ к элементам двумерного массиваВложенные циклы с двумерными массивамиПовторение: двумерные массивыРваные массивыТипичные шаблоны работы с двумерными массивамиПовторение: игровое поле6Множества и словари
Что такое множество?Словарь как множествоДобавление и удалениеОбъединение и пересечениеРазность множествПовторение — удаление дубликатовПотренируйтесь самостоятельно: Онлайн-компилятор GDScript