
En esta página, utilizarás el bloque mapear
para crear un bloque iniciales del nombre
y luego usarás mapear
junto con iniciales del nombre
para encontrar las iniciales de todos tus contactos.
iniciales del nombre
que acepta un contacto como entrada y reporta las iniciales de esa persona.
¡Inténtalo! (Cada punto rosa representa un espacio).
En un caso, dividir
se centra en los caracteres exactos de la cadena. En el otro caso, te está dando lo que realmente quieres: las palabras en el nombre del contacto. En un nivel inferior de abstracción, el texto está hecho de caracteres y miras a través de cada uno de los caracteres. Pero en un nivel superior de abstracción (como cuando estás leyendo), el texto se compone de palabras. Snap! te permite pensar en este nivel superior de abstracción.
letra (1) de (elemento (3) de (lista de nombres))
. letra (1) de
cada elemento en la lista de nombres. Eso suena como si lo que necesitáramos fuera una función de orden superior. Las funciones de orden superior son buenas para hacer cosas con elementos individuales de una lista.Una función de orden superior (higher-order function) es una función que toma una función como entrada (o reporta una función como salida).
mapear
.
El bloque toma dos entradas: una función (un reportero con un espacio de entrada en blanco) y una lista, y reporta una nueva lista en la que cada elemento es el resultado de llamar a la función con un elemento de la lista original como entrada. Por ejemplo:
Tú eliges la función que describe el resultado de un elemento de entrada y mapear
aplica esa función a cada elemento en la lista de entrada y luego reporta la lista de valores de resultado. Si tu función tiene elemento 1 de
o elemento 2 de
en ella, probablemente esté tratando de hacer la parte del trabajo de mapear
.
mapear
es una función de orden superior al igual que mantener
y combinar
. La función mapeada sobre la lista siempre tiene una ranura de entrada en blanco. Aquí es donde va el elemento de la lista cada vez que se realiza la función.
Esta imagen muestra cómo se podrían usar las tres funciones de orden superior:
Observa las expresiones de funciones de orden superior con estos procedimientos de formas (imaginarias).
Aquí hay una revisión rápida de las funciones de orden superior mapear
, mantener
y combinar
.
Mapear
realiza una función en cada elemento de una lista y reporta la lista de elementos modificados.Mantener
usa una función de predicado (una pregunta de verdadero/falso) para verificar cada elemento en una lista y reporta los elementos que hacen que el predicado sea verdadero. (Aprendiste sobre mantener
en Unidad 2 Laboratorio 3, Página 5: Mantener
elementos de una lista).Combinar
usa una función de combinación (una función con dos entradas) para reportar los resultados de combinar todos los elementos en una lista que usen esa función. (Aprendiste sobre combinar
en Unidad 2 Laboratorio 4, Página 3: Más reporteros matemáticos.)mapear
y combinar
juntos para crear un reportero de iniciales del nombre
que toma un nombre como entrada y reporte las iniciales de esa persona.iniciales del nombre
.
Primero, crea una expresión para reportar una lista de los nombres de todos tus contactos.
→
elemento de
espera una lista como entrada, pero mapear
coloca un único elemento de palabras y números, en ese espacio.Mapear
realiza la función de entrada sobre cada elemento en la lista de entrada.
La lista dentro de una lista que se muestra arriba deja más claro ahora que responde a este elemento de autocomprobación cuál es la estructura, pero tienes razón, en un programa real sería mejor usar un tipo de dato abstracto:
Mapear
realiza la función de entrada en cada elemento de la lista, no en toda la lista. La expresión elemento (1) de (capitales)
(sin usar mapear
en absoluto) reportaría la lista {Augusta, Maine}.mapear (letra (1) de (elemento (1) de ( ))) sobre (capitales)
reportaría la lista {A, B, C, D}.mapear (elemento (2) de ()) sobre (capitales)
reportaría la lista {Maine, Idaho, Carolina del Sur, Iowa}.Mapear
realiza la función de entrada en cada elemento de la lista, no en toda la lista. La expresión todas menos la primera de (capitales)
(sin usar mapear
en absoluto) reportaría la lista de listas {{Boise, Idaho}, {Columbia, South Carolina}, {Des Moines, Iowa}}.
Considera esta lista de cuadrados:
¿Cuál de las siguientes expresiones reportará una lista? Elige todas las que correspondan.
combinar
reportará un número."Esta empresa gasta más dinero en los grandes jefes que en las personas que hacen el trabajo", dice Alyssa. ¿Tiene razón? Escribe una expresión para calcular los salarios totales de todos los que cobran menos de 100,000 dólares al año. Luego encuentra el total de todos los que cobraron más de 100,000 dólares al año.