El método map
Parte de la sección Lógica y flujo del Journey de GDScript de Coddy. Lección 60 de 78.
Una función de orden superior es una función que recibe otra función como argumento. Los arrays tienen varias de ellas, y map() es la primera.
map() llama a una función en cada elemento de un arreglo y devuelve un arreglo nuevo con los resultados, en el mismo orden:
func square(n):
return n * nvar numbers = [1, 2, 3, 4, 5]
var squares = numbers.map(square)
print(squares)[1, 4, 9, 16, 25]Pasa la función por su nombre, sin paréntesis: map(square) pasa la función, mientras que map(square()) intentaría llamarla de inmediato. map() la llama después una vez por cada elemento: 1 se convierte en 1, 2 se convierte en 4, 3 se convierte en 9, y así sucesivamente.
Para un cálculo breve, una lambda te ahorra la función separada:
var squares = numbers.map(func(n): return n * n)La nueva matriz tiene el mismo tamaño que la original, y numbers en sí no cambia. Los resultados pueden ser de otro tipo que los elementos:
var words = ["apple", "kiwi", "banana"]
print(words.map(func(w): return w.length()))[5, 4, 6]map() devuelve un Array normal, incluso cuando lo llamas sobre uno tipado como Array[int]. Almacenar ese resultado en una variable Array[int] detiene el programa con un error, así que almacénalo en una variable sin tipo o en un Array.
split() devuelve un PackedStringArray, que no tiene map(). Primero conviértelo en un Array: Array("1,2,3".split(",")).map(func(s): return int(s)) da [1, 2, 3].
Desafío
FácilEscribe una función llamada convert_to_uppercase que tome un array de cadenas, strings, y devuelva un array nuevo con cada cadena en mayúsculas.
Usa map() con una función lambda, y ningún bucle. Por ejemplo, convert_to_uppercase(["hello", "world"]) devuelve ["HELLO", "WORLD"].
Las pruebas llaman a convert_to_uppercase() por sí mismas. No la llames ni imprimas nada.
Pruébalo tú mismo
func convert_to_uppercase(strings: Array[String]):
# Escribe el código aquí
pass
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y flujo
1Cadenas de texto en profundidad
Métodos de cadenasBúsqueda en cadenasReemplazar y eliminar espaciosDividir y unirRepaso - Comprobación del nombre de usuario4Diccionarios, parte 2
Diccionarios anidadosArrays de diccionariosCombinar diccionariosCopiar diccionariosRepaso: contador de frecuencias7Enumeraciones
¿Qué es una enumeración?Definir una enumeraciónValores de una enumeraciónEnumeraciones en matchRepaso: semáforo10Funciones avanzadas
Devolver múltiples valoresFunciones lambda, parte 1Funciones lambda, parte 2Repaso: ordenar con lambdaFunciones recursivas, parte 1Funciones recursivas, parte 2Repaso: sumar un array anidado13Sistema de gestión de inventario
Descripción general del proyectoAñadir artículo2Toma de decisiones avanzada
Coincidencia con variablesGuardas de coincidenciaPatrones de arraysPatrones de diccionariosComprobaciones de pertenenciaRepaso: analizador de comandos5Aplicación de agenda de contactos
Mostrar menúAñadir contacto8Gestor de expedientes estudiantiles
Descripción del proyectoAgregar estudiante11Funciones de orden superior
El método mapEl método filterEl método reduceany y allRepaso - Validador de correo electrónicoRepaso - Procesador de números3Arrays multidimensionales
Conceptos básicos de arrays 2DAcceso a elementos de arrays 2DBucles anidados con arrays 2DRepaso: arrays 2DArrays irregularesPatrones comunes de arrays 2DRepaso: tablero de juego6Conjuntos con diccionarios
¿Qué es un conjunto?El diccionario como conjuntoAñadir y eliminarUnión e intersecciónDiferencia de conjuntosRepaso: eliminar duplicados9Agregación avanzada de datos
Suma de valoresCómo encontrar el mínimo y el máximoOrdenación personalizadaRepaso: organizador de diccionariosPractica por tu cuenta: Compilador de GDScript online