select y collect en Smalltalk
Conservar, transformar, encontrar: el trío de colecciones.
"select keeps, collect transforms, detect finds the first."
| runs longRuns doubled |
runs := #(120 340 85 500 210).
longRuns := runs select: [:n | n > 150].
Transcript show: 'Long runs: ', longRuns printString; cr.
doubled := runs collect: [:n | n * 2].
Transcript show: 'Reprints: ', doubled printString; cr.
Transcript show: (runs detect: [:n | n > 400]) printString; cr.
Transcript show: (runs detect: [:n | n > 900] ifNone: [0])
printString; cr.
Transcript show: (runs reject: [:n | n < 200]) printString; cr.
Cómo funciona
select:conserva lo que el bloque aprueba.collect:mapea cada elemento a una colección nueva.detect:ifNone:halla el primero o cae al respaldo.
El intento, en números
- Líneas
- 14
- Caracteres a escribir
- 517
- Tokens
- 116
- Ritmo de tres estrellas
- 55 tpm
Al ritmo de tres estrellas de 55 tokens por minuto, este intento toma unos 127 segundos.
Paso 1 de 4 en Enumeración; paso 14 de 31 en Fundamentos del lenguaje.