cond, when y unless en Lisp
cond es el condicional de varias ramas; when y unless cubren los casos de un solo lado.
;; cond walks its clauses in order and takes the first test that holds
(defun grade (score)
(cond ((>= score 90) "A")
((>= score 80) "B")
((>= score 70) "C")
((>= score 60) "D")
(t "F")))
(defparameter *scores* '(96 84 71 58))
;; when and unless are one-armed ifs, each with an implicit progn body
(dolist (score *scores*)
(format t "~a maps to ~a~%" score (grade score))
(when (>= score 90) (format t " honor roll~%"))
(unless (>= score 60) (format t " retake scheduled~%")))
Cómo funciona
gradeprueba cuatro rangos en orden y cae en la cláusula(t "F")cuando ninguno coincide.- Un
dolisthace pasar por ahí cada puntaje de*scores*. whenagrega una línea de cuadro de honor sobre 90 yunlessmarca un examen a repetir bajo 60.
Palabras clave y builtins usados aquí
conddefparameterdefundolistformatunlesswhen
El intento, en números
- Líneas
- 15
- Caracteres a escribir
- 480
- Tokens
- 102
- Ritmo de tres estrellas
- 75 tpm
Al ritmo de tres estrellas de 75 tokens por minuto, este intento toma unos 82 segundos.
Paso 1 de 3 en Control de flujo; paso 7 de 27 en Fundamentos del lenguaje.