Lección 4: Condicionales | Curso de Emacs Lisp

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.

Atribución/Reconocimiento-NoComercial-SinDerivados 4.0 Internacional

¿Me ayudas?

Comprame un café
Pulsa sobre la imagen

No te sientas obligado a realizar una donación, pero cada aportación mantiene el sitio en activo logrando que continúe existiendo y sea accesible para otras personas. Además me motiva a crear nuevo contenido.

Comentarios

{{ comments.length }} comentarios

Nuevo comentario

Nueva replica  {{ formatEllipsisAuthor(replyComment.author) }}

Acepto la política de Protección de Datos.

Escribe el primer comentario