Clojure: Cond
Для самых сложных случаев, там, где обычно применяется if-else_if в Clojure есть еще одна форма: cond:
(cond
(pos? -5) "first return"
(zero? -5) "second return"
(pos? 5) "third return"
:else "boom!")Эта форма напоминает case, только в левой части находится предикат. Если его результат истина, то выполняется правая часть и её результат возвращается из cond.
Если необходимо, в конце добавляется :else, который ведет себя аналогично else в других языках.
Задание
Реализуйте функцию programmer-level, которая принимает на вход количество баллов, и возвращает уровень разработчика на основе этого числа. Если баллов от 0 до 10, то это junior, от 10 до 20 – middle, от 20 и выше – senior.
(programmer-level 10) ; middle
(programmer-level 0) ; junior
(programmer-level 40) ; seniorПолезное
Clojure: Cond
Для самых сложных случаев, там, где обычно применяется if-else_if в Clojure есть еще одна форма: cond:
(cond
(pos? -5) "first return"
(zero? -5) "second return"
(pos? 5) "third return"
:else "boom!")Эта форма напоминает case, только в левой части находится предикат. Если его результат истина, то выполняется правая часть и её результат возвращается из cond.
Если необходимо, в конце добавляется :else, который ведет себя аналогично else в других языках.
Задание
Реализуйте функцию programmer-level, которая принимает на вход количество баллов, и возвращает уровень разработчика на основе этого числа. Если баллов от 0 до 10, то это junior, от 10 до 20 – middle, от 20 и выше – senior.
(programmer-level 10) ; middle
(programmer-level 0) ; junior
(programmer-level 40) ; seniorПолезное
Ваше упражнение проверяется по этим тестам
(ns cond-test
(:require [test-helper :refer [assert-solution]]
[index :refer [programmer-level]]))
(assert-solution
[[3] [18] [40]]
["junior" "middle" "senior"]
programmer-level)Решение учителя откроется через:
20:00
