我一直试图让它与引用、引用拼接、评估以及我能想到的任何其他方法一起使用,但到目前为止还没有运气。我明白为什么它不起作用 - 它被视为一张 map ,它试图评估 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)
我有一个相当复杂的解构 map ,我正在考虑多次使用它,所以把它藏在某个地方似乎是个好主意。也许有更好的方法来解决它?
最佳答案
好主意,但你不能完全这样,因为你想要存储的东西并不是一个真正的值,所以你不能将它存储在 var 中。
相反,您可以定义一个在其扩展中包含此内容的宏:
(defmacro with-abc [abc & body]
`(let [~'{:keys [a b c]} ~abc]
~@body))
(with-abc foo
(...use a, b, and c...))
关于map - 存储解构映射供以后使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23644538/