Translate

viernes, 5 de marzo de 2021

Primeros pasos con Clojure, parte 28

 Seguimos con Clojure... 


En Clojure, todos los valores son lógicamente verdaderos o falsos. Los únicos valores "falsos" son falsos y nulos; todos los demás valores son lógicamente verdaderos.


user=> (if true :truthy :falsey)

:truthy

user=> (if (Object.) :truthy :falsey) ; objects are true

:truthy

user=> (if [] :truthy :falsey) ; empty collections are true

:truthy

user=> (if 0 :truthy :falsey) ; zero is true

:truthy

user=> (if false :truthy :falsey)

:falsey

user=> (if nil :truthy :falsey)

:falsey


El if solo toma una sola expresión para el "entonces" y "si no". Si necesitamos más devemos utilizar el do para crear bloques más grandes que sean una sola expresión.


(if (even? 5)

  (do (println "even")

      true)

  (do (println "odd")

      false))


when es un if con solo una rama then. Verifica una condición y luego evalúa cualquier número de declaraciones como un cuerpo (por lo que no se requiere do).  Y devuelve el valor de la última expresión. Si la condición es falsa, se devuelve nil.


(when (neg? x)

  (throw (RuntimeException. (str "x must be positive: " x))))