typestar

map y grep en Perl

Transforma y filtra listas en una línea cada uno — y luego encadena ambos en un pipeline.

use strict;
use warnings;

my @nums = (3, 1, 4, 1, 5, 9, 2, 6);

my @squares = map { $_ * $_ } @nums;
my @evens = grep { $_ % 2 == 0 } @nums;
print "@squares\n";
print "@evens\n";

# read right to left: keep the evens, then double them
my @doubled = map { $_ * 2 } grep { $_ % 2 == 0 } @nums;
print "@doubled\n";

Cómo funciona

  1. map corre su bloque una vez por elemento con $_ puesto, y junta una copia elevada al cuadrado.
  2. grep conserva solo los elementos cuyo bloque devuelve verdadero — aquí los pares.
  3. Encadenadas, las llamadas se leen de derecha a izquierda: grep elige los pares y map duplica lo que sobrevivió.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
13
Caracteres a escribir
312
Tokens
92
Ritmo de tres estrellas
70 tpm

Al ritmo de tres estrellas de 70 tokens por minuto, este intento toma unos 79 segundos.

Escribe este fragmento

Paso 2 de 3 en Listas y contexto; paso 11 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →