Expressão case no Clojure
A expressão case é utilizada para comparar um argumento contra uma série de valores literais em busca de uma correspondência exata.
-
Eficiência: Diferente do cond, que realiza uma busca linear , o
caseé executado em tempo constante . -
Restrição de Literais: Para garantir essa performance, cada valor de teste deve ser um literal conhecido em tempo de compilação (números, strings, keywords, etc.). Não pode usar expressões ou funções no lado do teste.
Sintaxe:
(case valor-alvo
valor-1 "resultado-1"
valor-2 "resultado-2"
"resultado-padrao-opcional")
Exemplo:
(defn test-case [x]
(case x
5 "É o número cinco"
10 "É o número dez"
"Não é 5 nem 10")) ; Este é o valor padrão (else)
(test-case 5) ;; => "É o número cinco"
(test-case 11) ;; => "Não é 5 nem 10"(defn test-case [x]
(case x
5 "É o número cinco"
10 "É o número dez"))
(test-case 5) ;; => "É o número cinco"
(test-case 11) ;; => Execution error (IllegalArgumentException) No matching clause: 11Attention