@stakhovyak

Как работают case и cond в Clojure?

Мне не понятен один момент в примере кода
(defn classify [x]
  (cond
    (< x 0) "Negative"
    (case x
      (13 42 100500) true
      false) "Special"
    :else "Boring"))

А точнее, что делают true false в case.
Программа возвращает Negative если x<0, Special если x=13 / 42 / 100500, и Boring в остальных случаях
  • Вопрос задан
  • 23 просмотра
Решения вопроса 1
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
1) cond - проверяет условия на true/false, на первом true выполняет вторую половину и заканчивается, :else - если ничего не подошло
2) case - проверяет первый параметр (x) на соответсвие условиям и выполняет первое подходящее, возвращая результат. Очень интересна здесь работа сравнения x со списком (13 42 100500) или false.
Но пример конечно с издевкой :) Можно было бы все в cond обернуть, и не мучить разум...
Хотя, взял себе на заметку, понравилось.

В общем, сам cond отвечает за три сущности (< x) - "Negative", case - проверка на список "Special" и все остальное "Boring"
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы