Gar*_*ler 5 clojure map destructuring
我一直试图让它与引用,引用拼接,评估以及我能想到的其他任何东西一起工作,但到目前为止还没有运气.我明白为什么它不工作-它被看作是一张地图,它试图EVAL a
,b
和c
-只是没有怎么去解决它.
(def destructor {a :a b :b c :c})
; CompilerException java.lang.RuntimeException: Unable to resolve symbol: a in this context, compiling:(:1:15)
(let [destructor my-map]
'etc)
Run Code Online (Sandbox Code Playgroud)
我有一个相当复杂的解构图,我正在考虑使用几次,所以把它藏在某个地方似乎是个好主意.也许还有更好的方法可以解决这个问题?
好主意,但你不能以这种方式做到这一点,因为你想要存储的东西并不是真正的值,所以你不能将它存储在 var 中。
相反,您可以定义一个宏,将其包含在其扩展中:
(defmacro with-abc [abc & body]
`(let [~'{:keys [a b c]} ~abc]
~@body))
(with-abc foo
(...use a, b, and c...))
Run Code Online (Sandbox Code Playgroud)