case

case prend en paramètre une valeur, puis une suite de clause associant une valeur vn à un résultat rn. Si le premier paramètre de case est égal à une des valeurs d'une clause, le résultat associé sera retourné.

Contrairement à cond et condp vu précédemment, case n'évalue pas chaque clause l'une après l'autre. De plus, les valeurs dans les clauses ne sont pas évaluées et donc ne peuvent pas être des forms (cela doit être donc des valeurs litéralles comme des entiers, des string...).

Comme condp, case produira une exception si aucune clause ne match.

Précédent - Suivant -

;; matching clause
(println (case "foo"
           "bar" "foo == bar ?!"
           "foo" "foo == foo !"))

;; no matching clause: an exception is fired
(println (try
           (case "foo"
             "bar" "foo == bar ?!"
             "baz" "foo == foo !")
           (catch :default e
             (str "No matching clause : " e))))

powered by mcorbin - Available on Github