Lección 4: Condicionales
if
(if (< 3 4)
(print "3 es menor que 4")
(print "3 no es menor que 4"))
Devuelve el valor de la rama que se cumple.
when
(when (< 3 4)
(print "3 es menor que 4"))
Devuelve el valor de la rama que se cumple, si no devuelve nil.
unless
(unless (< 3 4)
(print "3 no es menor que 4"))
Es un when
negado. El código sería similar a este:
(when (not (< 3 4))
(print "3 no es menor que 4"))
cond
Sería similar a un if
con múltiples ramas.
(cond
((< 3 4) (print "3 es menor que 4"))
((> 3 4) (print "3 es mayor que 4"))
(t (print "3 es igual a 4")))
Devuelve el valor de la rama que se cumple.
case
No confundir con switch
de otros lenguajes. Sería similar a un cond
con una comparación.
(case 3
(1 (print "Es 1"))
(2 (print "Es 2"))
(3 (print "Es 3"))
(4 (print "Es 4"))
(t (print "No es ninguno de los anteriores")))
Devuelve el valor de la rama que se cumple.
and
(and (< 3 4) (< 4 5)) ;; t
(and (< 3 4) (> 4 5)) ;; nil
Devuelve el valor de la última expresión si todas son verdaderas, si no devuelve nil.
or
(or (< 3 4) (< 4 5)) ;; t
(or (< 3 4) (> 4 5)) ;; t
(or (> 3 4) (> 4 5)) ;; nil
Devuelve el valor de la primera expresión verdadera, si no devuelve nil.
not
(not t) ;; nil
(not nil) ;; t
Devuelve el valor contrario al que recibe.
null
(null nil) ;; t
(null 3) ;; nil
Devuelve t si el valor es nil, si no devuelve nil.
if-not
(if-not (< 3 4)
(print "3 no es menor que 4")
(print "3 es menor que 4"))
Devuelve el valor de la rama que no se cumple. Similar a un if
con la condición negada.
when-not
(when-not (< 3 4)
(print "3 no es menor que 4"))
Se diferencia de unless
en que devuelve el valor de la rama que no se cumple.
assert
(assert (< 3 4) "3 no es menor que 4")
Si la condición es falsa, lanza un error con el mensaje que recibe. Si es verdadera, no devuelve nada.
when-let
(when-let ((a 3)
(b 4))
(print (+ a b)))
Si todas las variables son verdaderas, ejecuta el código. Si no, no hace nada.
if-let
(if-let ((a 3)
(b 4))
(print (+ a b))
(print "No se cumple"))
Si todas las variables son verdaderas, ejecuta el código de la primera rama. Si no, ejecuta el código de la segunda rama.
Comparaciones
(= 3 3) ;; t
(= 4 4.0) ;; nil
(= 2 2 2 2 2) ;; t
(< 1 2) ;; t
(< 2 1) ;; nil
(< 1 1) ;; nil
(< 1 1.1) ;; t
(< 1 2 1) ;; nil
(< 1 2 2) ;; nil
(< 1 1 2) ;; nil
(< 1 2 3) ;; t
(> 1 2) ;; nil
(> 2 1) ;; t
(> 1 1) ;; nil
(> 1 1.1) ;; nil
(> 1 2 1) ;; nil
(> 1 2 2) ;; nil
(> 1 1 2) ;; nil
(> 1 2 3) ;; nil
(<= 1 2) ;; t
(<= 2 1) ;; nil
(<= 1 1) ;; t
(<= 1 1.1) ;; t
(<= 1 2 1) ;; t
(<= 1 2 2) ;; t
(<= 1 1 2) ;; t
(<= 1 2 3) ;; t
(>= 1 2) ;; nil
(>= 2 1) ;; t
(>= 1 1) ;; t
(>= 1 1.1) ;; nil
(>= 1 2 1) ;; nil
(>= 1 2 2) ;; nil
(>= 1 1 2) ;; nil
(>= 1 2 3) ;; nil
(max 2 8 3 7 4 6 5) ;; 8
(min 2 8 3 7 4 6 5) ;; 2
string= ; compara strings
Esta obra está bajo una Licencia Creative Commons Atribución-NoComercial-SinDerivadas 4.0 Internacional.
¿Me invitas a un café? ☕
Puedes hacerlo usando el terminal.
ssh customer@andros.dev -p 5555
Comentarios
Nuevo comentario
Nueva replica {{ formatEllipsisAuthor(replyComment.author) }}
Escribe el primer comentario
{{ comments.length }} comentarios