if, when y cond en Clojure
Lecturas de un mareógrafo encaminadas por if, when y cond.
;; if takes a test, a then branch, and an optional else branch
(defn tide-label [meters]
(if (> meters 2.0) "high" "low"))
;; when is the one-branch case; nil comes back when the test fails
(defn flood-watch [meters]
(when (> meters 3.0) (str "flood watch at " meters " m")))
;; cond walks pairs in order and :else is just a truthy keyword
(defn advice [meters]
(cond
(> meters 3.0) "stay ashore"
(> meters 2.0) "moor the skiff"
:else "normal range"))
;; if returns a value, so it can feed a def directly
(def gauge-note (if (> 3.4 0.0) "gauge online" "gauge offline"))
(println gauge-note (tide-label 2.6) (advice 3.2) (flood-watch 3.4))
Cómo funciona
tide-labelusa elifde tres argumentos: condición, rama verdadera y rama falsa.flood-watchmuestrawhencomo la forma de una sola rama, que da nil cuando la condición falla.advicerecorre los pares deconden orden hasta:else, ygauge-noteguarda unifen undef.
Palabras clave y builtins usados aquí
defdefnifprintlnstrwhen
El intento, en números
- Líneas
- 18
- Caracteres a escribir
- 641
- Tokens
- 96
- Ritmo de tres estrellas
- 75 tpm
Al ritmo de tres estrellas de 75 tokens por minuto, este intento toma unos 77 segundos.
Paso 1 de 3 en Flujo y qué cuenta como verdadero; paso 10 de 27 en Fundamentos del lenguaje.