O método reduce
Parte da seção Lógica e fluxo do Journey de GDScript da Coddy. Lição 62 de 78.
reduce() combina todos os elementos de um array em um valor: uma soma, um produto, o maior elemento, uma frase.
var numbers = [1, 2, 3, 4]
var total = numbers.reduce(func(acc, n): return acc + n, 0)
print(total)10Ele recebe dois argumentos: uma função e um valor inicial, aqui 0. A função recebe o resultado acumulado até o momento, chamado de acumulador (acc), e o próximo elemento. O valor retornado se torna o novo acumulador:
acccomeça em00 + 1é1,1 + 2é3,3 + 3é6,6 + 4é10- após o último elemento,
reduce()retorna o acumulador:10
Para um produto, comece em 1: numbers.reduce(func(acc, n): return acc * n, 1) é 24.
Sem um valor inicial, o primeiro elemento é o início, e a função é executada a partir do segundo elemento. Isso é adequado para encontrar o maior elemento:
var biggest = [4, 9, 2].reduce(func(a, b): return a if a > b else b)
print(biggest) # 9Em um array vazio sem valor inicial, reduce() retorna null, então forneça um valor inicial quando o array puder estar vazio.
O acumulador pode ser de qualquer tipo. Com um valor inicial de "", isso cria uma String a partir das primeiras letras:
var words = ["game", "over"]
print(words.reduce(func(acc, w): return acc + w[0], "")) # goDesafio
FácilO programa lê uma linha de números inteiros separados por vírgulas e os armazena no array numbers. Esta parte já está escrita.
Usando reduce() para cada um deles, imprima três linhas:
- a soma dos números
- o produto deles
- o maior número (escreva a comparação na lambda; não chame
max())
Sempre há pelo menos um número. Para a entrada 3,7,2,8,4, a saída é:
24
1344
8Experimente você mesmo
extends Node
func _ready():
var numbers := []
for part in OS.read_string_from_stdin().split(","):
numbers.append(int(part))
# Imprima a soma, o produto e o maior número, cada um com reduce()
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
1Strings em Profundidade
Métodos de StringBusca em StringsSubstituir e Remover EspaçosDividir e UnirRecapitulação - Verificação de Nome de Usuário4Dicionários - Parte 2
Dicionários aninhadosArrays de dicionáriosMesclando dicionáriosCopiando dicionáriosRevisão - Contador de frequência10Funções Avançadas
Retornando Múltiplos ValoresFunções Lambda Parte 1Funções Lambda Parte 2Revisão - Ordenação com LambdaFunções Recursivas Parte 1Funções Recursivas Parte 2Revisão - Somando Array Aninhado13Sistema de Gerenciamento de Estoque
Visão Geral do ProjetoAdicionar Item2Tomada de Decisões Avançada
Correspondência com VariáveisGuards de CorrespondênciaPadrões de ArrayPadrões de DicionárioVerificações de PertinênciaRevisão - Analisador de Comandos5Aplicativo de Agenda de Contatos
Exibir menuAdicionar contato8Gerenciador de Registros de Alunos
Visão Geral do ProjetoAdicionar Aluno11Funções de Alta Ordem
O método mapO método filterO método reduceany e allRevisão - Validador de e-mailRevisão - Processador de números3Arrays multidimensionais
Fundamentos de arrays 2DAcessando elementos de arrays 2DLaços aninhados com arrays 2DRevisão - arrays 2DArrays irregularesPadrões comuns de arrays 2DRevisão - tabuleiro de jogo6Conjuntos com Dicionários
O que é um conjunto?Dicionário como conjuntoAdicionando e removendoUnião e interseçãoDiferença entre conjuntosRevisão - Removendo duplicatas9Agregação Avançada de Dados
Somando ValoresEncontrando o Mínimo e o MáximoOrdenação PersonalizadaRevisão - Ordenador de DicionáriosPratique por conta própria: Compilador de GDScript online