Menu
CoddyTech

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")
challenge icon

Задание

Легко

Программа считывает одну строку с оценками, разделёнными запятыми, и сохраняет их в массиве numbers. Эта часть уже написана.

Выведите две строки:

  1. Any perfect: , за которым следует true, если хотя бы одна оценка равна 100, в противном случае false
  2. All 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()
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и потоки выполнения

Потренируйтесь самостоятельно: Онлайн-компилятор GDScript