] У меня есть функция, которая возвращает map. Ключи статичны, но значения являются условными. Примерно так:
(defn map-returning-function [x y]
{:a (if (some-test-fn x) "one value" "other value"
:b (if (some-test-fn x) 15 25
:c (if (different-test y) :one :two})
Есть ли более элегантный способ добиться этого без необходимости писать тест if
для каждого значения? Единственный другой способ Я можно придумать
(defn another-map-returning-function [x y]
(if (some-test-fn x)
{:a "one value", :b 15, :c (if (different-test y) :one :two)}
{:a "other value" :b 25, :c (if (different-test y) :one :two)}))
, который мне не кажется намного лучше, поскольку он повторяет имена ключей для каждой ветви условного выражения и повторяет вызов функции в different-test
. И не дай бог, Мне нужен cond
вместо просто if
.