Clojure 매크로 여기에 noob. 일부 선택적 매개 변수가있는 함수가 있습니다. 이주는옵션 매크로 args를 함수에 전달하는 방법
(defn mk-foo [name & opt]
(vec (list* name opt)))
: 나도 같은 선택적 인수를 받아 mk-foo
의 호출에 투명하게 전달합니다 매크로를 작성하려고 해요
user> (mk-foo "bar" 1 2 3)
["bar" 1 2 3]
. 지금까지이있다 :
원하는 효과가(defmacro deffoo [name & opt]
`(def ~name ~(apply mk-foo (str name) opt)))
:
user> (macroexpand '(deffoo bar 1 2 3))
(def bar ["bar" 1 2 3])
apply
의 사용은 opt
이 서투른 느낌 목록을 평평하게 할 수 있습니다. 이 일을하는 관용적 인 방법이 있습니까? 나는 [email protected]
이 필요하다고 생각하지만, 나는 바로 인용 할 수는 없다. 많은 감사합니다.
나는 clojure에별로 좋지는 않지만 내게는 좋아 보인다! –