Если вы связываете переменную только для того, чтобы получить правильное значение и не используете его дважды, есть другой способ сделать это. В ядре есть функция с именем fnil
.
Вы вызываете fnil
с функцией, которую хотите вызвать, и аргументом по умолчанию. Это вернет функцию, которая заменит nils заданным вами значением по умолчанию.
Вы можете сделать одну из вещей в зависимости от того, что вы хотите. Создайте локальную функцию.
(let [default-fn (fnil fn-you-want-to call "default-argument")]
(default-fn input-argument))
В некоторых случаях (где у вас всегда один и тот же аргумент по умолчанию) вы можете перейти к логике, чтобы сделать это из своего кода, и поместить его в исходную функцию (или обернуть функцию в случае, если она находится в другой библиотеке).
(defn fn-you-want-to-call [arg] ....)
(def fn-you-want-to-call-default (fnil fn-you-want-to-call "default-argument"))
Тогда в вашем коде оно уменьшается до
(fn-you-want-to-call-default input-argument)
Больше вы можете найти здесь:
http://clojuredocs.org/clojure_core/clojure.core/fnil