typestar

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

  1. tide-label usa el if de tres argumentos: condición, rama verdadera y rama falsa.
  2. flood-watch muestra when como la forma de una sola rama, que da nil cuando la condición falla.
  3. advice recorre los pares de cond en orden hasta :else, y gauge-note guarda un if en un def.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 1 de 3 en Flujo y qué cuenta como verdadero; paso 10 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →