Ich möchte eine Funktion erstellen, die ein erforderliches Argument x und ein optionales Argument opt1 ODER ein Schlüsselwort argument opt2 einnimmt.Clojure-Schlüsselwort und optionales Argument Problem
Im Moment habe ich
(defn foo x & [opt1 {:keys [opt2]}]
...
Aber die oben Unterschrift lässt mich nur in Keyword-Argument opt2 passieren, wenn beide x und opt1 vorhanden ist wie
(foo 'x 'opt1 {:opt2 'opt2})
Nicht so
(foo 'x {:opt2 'opt2})
Bitte helfen Sie mir eine Funktion zu erstellen, die ein erforderliches Argument X und entweder opt1 oder opt2, whe re opt2 ist ein Schlüsselwort-Argument.
Vielen Dank.
EDIT: Ich möchte das gleiche auch für andere Makros tun. Also muss ich immer noch den defmacro benutzen.
Betrachten wir mit 'defnk' von [clojure.contrib.def] (http://richhickey.github.com/clojure-contrib/def-api.html) anstelle von expliziten Destrukturierung. – ffriend
'defnk' ist ab 1.2 zugunsten einer konsistenteren integrierten Funktionalität veraltet. – kotarak