case y condp en Clojure
Los colores de las líneas del metro salen de case sobre literales; el gentío, de condp.
;; case dispatches on literal constants and never evaluates them
(defn line-color [line]
(case line
("A" "C" "E") "blue"
("1" "2" "3") "red"
"G" "light green"
"unknown line"))
;; the trailing expression is the default; without one a miss throws
(println (line-color "C") (line-color "G") (line-color "Q"))
;; condp holds a predicate and a right-hand argument across the clauses
(defn crowding [riders]
(condp <= riders
900 "crush"
500 "heavy"
"light"))
(println (map crowding [1200 640 40]))
Cómo funciona
line-coloragrupa literales en listas como("A" "C" "E")para que varias claves compartan resultado.- El
"unknown line"final es el valor por defecto; sin él, un valor sin coincidencia lanza error. crowdingusacondp <= riders, así que la cláusula900 "crush"dispara cuando 900 no supera al conteo.
Palabras clave y builtins usados aquí
defnmapprintln
El intento, en números
- Líneas
- 19
- Caracteres a escribir
- 494
- Tokens
- 73
- Ritmo de tres estrellas
- 75 tpm
Al ritmo de tres estrellas de 75 tokens por minuto, este intento toma unos 58 segundos.
Paso 3 de 3 en Flujo y qué cuenta como verdadero; paso 12 de 27 en Fundamentos del lenguaje.