Ваша cond
форма в порядке, но вы можете использовать case
здесь:
(defn build-string [some-integer]
(str "Initial text"
(case some-integer
1 "Add string one"
2 "Add string two"
3 "Add string three")))
Ваш «вопрос неизменяемой строки»: в отличие от вашей версии JavaScript, ни один из операторов вы или яиспользовал изменить любой из своих аргументов.Например, Clojure str
создает новую строку, а JavaScript +=
изменяет переменную.Вам не нужно беспокоиться: это не ошибка для изменения вещей в Clojure, за которыми вам нужно следить, а язык затрудняет это в первую очередь.Если вы видите простую функцию, использующую стандартные операторы, очень маловероятно, что она делает что-то небезопасное.