Seguinte: Formas Especiais Acima: Expressões Condicionais Anterior: Selecção simples
Índice remissivo

Selecção Múltipla

Para além do if, existem outras expressões condicionais em Lisp. O cond é uma versão mais potente que o if. É uma espécie de switch-case do C. A sua sintaxe é:

(cond (condição-1 expressão-1)
      (condição-2 expressão-2)
                 tex2html_wrap3298 
      (condição-n expressão-n))

Designa-se o par (condição-i expressão-i) por cláusula. O cond testa cada uma das condições em sequência, e quando uma delas avalia para verdade, é devolvido o valor da expressão correspondente, terminando a avaliação. Um exemplo será:

> (cond ((> 4 3) 5)
        (t 6))
5

O cond permite uma análise de casos mais simples do que o if.

(defun teste (x y z w)
   (cond ((> x y) z)
         ((< (+ x w) (* y z)) x)
         ((= w z) (+ x y))
         (t 777)))

A função equivalente usando if seria mais complicada.

(defun teste (x y z w)
    (if (> x y)
        z
        (if (< (+ x w) (* y z))
            x
            (if (= w z)
                (+ x y)
                777))))


Copyright António Leitão, 1995