Menu
CoddyTech

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 * n
var 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].

challenge icon

Desafío

Fácil

Escribe 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
quiz iconPonte a prueba

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

Practica por tu cuenta: Compilador de GDScript online