O método map
Parte da seção Lógica e fluxo do Journey de GDScript da Coddy. Lição 60 de 78.
Uma função de ordem superior é uma função que recebe outra função como argumento. Os arrays têm várias delas, e map() é a primeira.
map() chama uma função para cada elemento de um array e retorna um novo array com os resultados, na mesma ordem:
func square(n):
return n * nvar numbers = [1, 2, 3, 4, 5]
var squares = numbers.map(square)
print(squares)[1, 4, 9, 16, 25]Passe a função pelo nome, sem parênteses: map(square) passa a função adiante, enquanto map(square()) tentaria chamá-la imediatamente. map() então a chama uma vez para cada elemento: 1 se torna 1, 2 se torna 4, 3 se torna 9, e assim por diante.
Para um cálculo curto, uma lambda poupa você de criar uma função separada:
var squares = numbers.map(func(n): return n * n)O novo array tem o mesmo tamanho que o original, e o próprio numbers não muda. Os resultados podem ter um tipo diferente do dos elementos:
var words = ["apple", "kiwi", "banana"]
print(words.map(func(w): return w.length()))[5, 4, 6]map() retorna um Array comum, mesmo quando você o chama em um tipado, como Array[int]. Armazenar esse resultado em uma variável Array[int] interrompe o programa com um erro, então armazene-o em uma variável sem tipo ou em um Array.
split() retorna um PackedStringArray, que não tem map(). Primeiro, transforme-o em um Array: Array("1,2,3".split(",")).map(func(s): return int(s)) resulta em [1, 2, 3].
Desafio
FácilEscreva uma função chamada convert_to_uppercase que recebe um array de strings, strings, e retorna um novo array com todas as strings em letras maiúsculas.
Use map() com uma função lambda, sem usar loops. Por exemplo, convert_to_uppercase(["hello", "world"]) retorna ["HELLO", "WORLD"].
Os testes chamam convert_to_uppercase() por conta própria. Não a chame e não imprima nada.
Experimente você mesmo
func convert_to_uppercase(strings: Array[String]):
# Escreva o código aqui
pass
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