从Clojure中的向量构造映射
我有一个向量,看起来像这样:从Clojure中的向量构造映射,clojure,Clojure,我有一个向量,看起来像这样: ["Config" "{}" "Auth" "{}" "Other" "{}"] 我想将每个键值对转换为以下映射: {"Config" "{}", "Auth" "{}", "Other" "{}"} 我怎样才能用Clojure做到这一点?是否有内置函数可以执行此操作?用于将所需类型的映射构造函数应用于向量,即: (apply hash-map ["Config" "{}" "Auth" "{}" "Other" "{}"]) 编辑 根据,您可以获得不同的映射
["Config" "{}" "Auth" "{}" "Other" "{}"]
我想将每个键值对转换为以下映射:
{"Config" "{}", "Auth" "{}", "Other" "{}"}
我怎样才能用Clojure做到这一点?是否有内置函数可以执行此操作?用于将所需类型的映射构造函数应用于向量,即:
(apply hash-map ["Config" "{}" "Auth" "{}" "Other" "{}"])
编辑
根据,您可以获得不同的映射类型,具体取决于您计算{}
的方式,因此请使用适合您需要的映射构造函数
编辑
查看literal
{}
返回的不同对象类型似乎是一个错误。刚刚得到一个答案,(应用assoc{}[“Config”“{}”“Auth”“{}”“Other”“{}]”)
。还有更好的吗?谢谢,干得好!把问题留长一点,我不喜欢过早地接受答案,以防有人遗漏了什么。“如果您想准确地模拟{}
所做的事情,请使用数组映射
,而不是当前实现的哈希映射
”,即文字映射{}
带有常量键和值的表达式也将被解析为哈希映射(尽管容易混淆地被评估为数组映射)。请注意,文本{:a1,:b2,:c3}
的键顺序不受尊重(在版本1.5中)。@a.Webb I是由(type x)
结果建议的。那么为什么它会给出不同的值呢?由于这种令人困惑的评估?@A.Webb您是对的,它确实被评估为数组映射。编辑了答案。这种行为有什么原因吗?试试(defm{:a1:b2:c3})
。然后,(键入m);=>clojure.lang.PersistentHashMap
,但(类型(eval m));=>clojure.lang.PersistentArrayMap
。和(秒m)=>[:c3]
。我不相信这是故意的。