Menu
CoddyTech

any e all

Parte da seção Lógica e fluxo do Journey de GDScript da Coddy. Lição 63 de 78.

any() e all() fazem uma pergunta de sim ou não sobre um array inteiro. Ambos recebem uma função que retorna true ou false para um elemento:

  • any() retorna true se a função retornar true para pelo menos um elemento.
  • all() retorna true se a função retornar true para todos os elementos.
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

Um inimigo tem 0 de HP, então any() é true, e esse mesmo inimigo faz com que all() seja false.

Ambos param assim que a resposta é conhecida: any() no primeiro true, all() no primeiro false. Eles também funcionam com funções nomeadas, como numbers.all(is_even).

Em um array vazio, any() retorna false, porque nenhum elemento é aprovado, e all() retorna true, porque nenhum elemento falha.

Use-os em uma condição no lugar de um loop com uma variável de sinalização:

var inventory = ["sword", "key", "rope"]
if inventory.any(func(item): return item == "key"):
	print("The door opens")
challenge icon

Desafio

Fácil

O programa lê uma linha de notas separadas por vírgulas e as armazena no array numbers. Esta parte já está escrita.

Imprima duas linhas:

  1. Any perfect: seguido de true se pelo menos uma nota for 100; caso contrário, false
  2. All passed: seguido de true se todas as notas forem 50 ou mais; caso contrário, false

Use any() para a primeira linha e all() para a segunda. Para a entrada 100,75,40, a saída é:

Any perfect: true
All passed: false

Experimente você mesmo

extends Node

func _ready():
	var numbers := []
	for part in OS.read_string_from_stdin().split(","):
		numbers.append(int(part))
	# Imprima as duas linhas com any() e all()
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica e fluxo

Pratique por conta própria: Compilador de GDScript online