Я пытаюсь получить необязательный параметр ключевого слова, который зависит от другого необязательного параметра ключевого слова для его значения.Аргумент ключевого слова Clojure по умолчанию в зависимости от другого аргумента ключевого слова?
Пример функции:
(defn printab [& {:keys [a b] :or {:a 5 :b 200}}]
(println "a is" a "b is" b))
Я хочу значение по умолчанию :b
быть значение :a
. Есть ли способ сделать это в макросе defn
, или мне просто нужно создать привязку let
для обработки этого поведения?
Ниже функция не работает так, как я надеялся:
(defn printab [& {:keys [a b] :or {:a 5 :b a}]
(println "a is" a "b is" b))
Я не думаю, что ваш пример функции делает то, что вы думаете. – soulcheck
@amalloy Почему вы удалили теги «аргументы» «параметры-передачи» «необязательные параметры» и «ключевое слово-аргумент»? Я не понимаю. – user1559027
Теги для помощи людям с соответствующими знаниями находят ваш вопрос. Просто загрузка с кучей тегов не помогает, если никто не следит за этими тегами: вам не нужны «аргументы» (существует такая вещь?), Вам нужен эксперт «clojure». В большинстве вопросов, связанных с языком, не нужны никакие вторичные теги; они в основном полезны, если проблема сосредоточена вокруг какой-либо сторонней библиотеки или чего-то еще. – amalloy