map - 存储解构映射供以后使用

标签 map clojure destructuring

我一直试图让它与引用、引用拼接、评估以及我能想到的任何其他方法一起使用,但到目前为止还没有运气。我明白为什么它不起作用 - 它被视为一张 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/

相关文章:

r - 向ggplot map 添加比例尺

Android:将 TextView 超链接到 map 位置?

Clojure map-like 流经函数

javascript - 为什么作为函数参数的内联解构不能按预期工作

reactjs - 为什么解构可以与事件配合使用,而没有事件就无法进行解构

c++ - 编译时检查的字符串到整数映射是否可能?

r - 如何在 R 中使用 map ?

postgresql - 添加到 postgresql 后的 Clojure 更改日期

clojure - 在 Datomic 中,如何获得对特定实体的值所做更改的时间线 View ?

javascript - Vue - 将对象解构到 this(数据)