Clojure: When и When-not
Обычного if без else в Clojure нет, но есть две специальные формы: when и when-not, предназначенные для этой цели.
When
(when test-expr body ...+) Если результат
test-exprистина, то вычисляется тело.
(when (pos? -5)
(println "hi"))
(when (pos? 5)
(println "hi")
(println " there"))When-not
Тоже самое что и (when (not test-expr) body ...+).
when-notработает наоборот. Тело вычисляется в том случае, еслиtest-expr– ложь.when-notхоть и бывает удобен, но резко становится нечитаемым, когда вtest-exprпоявляются составные условия.
(when-not (pos? 5)
(println "hi"))
(when-not (pos? -5)
(println "hi")
(println " there"))Задание
Реализуйте функцию say-boom, которая возвращает строку Boom!, если её вызвали с параметром "go".
(say-boom "hey")
(say-boom "go") ; "Boom!"Полезное
Clojure: When и When-not
Обычного if без else в Clojure нет, но есть две специальные формы: when и when-not, предназначенные для этой цели.
When
(when test-expr body ...+) Если результат
test-exprистина, то вычисляется тело.
(when (pos? -5)
(println "hi"))
(when (pos? 5)
(println "hi")
(println " there"))When-not
Тоже самое что и (when (not test-expr) body ...+).
when-notработает наоборот. Тело вычисляется в том случае, еслиtest-expr– ложь.when-notхоть и бывает удобен, но резко становится нечитаемым, когда вtest-exprпоявляются составные условия.
(when-not (pos? 5)
(println "hi"))
(when-not (pos? -5)
(println "hi")
(println " there"))Задание
Реализуйте функцию say-boom, которая возвращает строку Boom!, если её вызвали с параметром "go".
(say-boom "hey")
(say-boom "go") ; "Boom!"Полезное
Ваше упражнение проверяется по этим тестам
(ns guards-test
(:require [test-helper :refer [assert-solution]]
[index :refer [say-boom]]))
(assert-solution [["hey"] ["go"]] [nil "Boom!"] say-boom)Решение учителя откроется через:
20:00
