Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
向Clojure中的值向量添加键_Clojure - Fatal编程技术网

向Clojure中的值向量添加键

向Clojure中的值向量添加键,clojure,Clojure,我有一个字符串向量(虽然可以是任何东西),我想创建一个新的映射条目向量,其中键是一些关键字 例如,假设: ["foo" "bar" "baz"] 我想去 [{:message "foo"} {:message "bar"} {:message "baz"}] 应用此转换最惯用的方式是什么 谢谢 这是意见的问题。一些选择: (into [] (for [x ["foo" "bar" "baz"]] {:message x})) (mapv hash-map (repeat :messag

我有一个字符串向量(虽然可以是任何东西),我想创建一个新的映射条目向量,其中键是一些关键字

例如,假设:

["foo" "bar" "baz"]
我想去

[{:message "foo"} {:message "bar"} {:message "baz"}]
应用此转换最惯用的方式是什么


谢谢

这是意见的问题。一些选择:

 (into [] (for [x ["foo" "bar" "baz"]] {:message x}))

 (mapv hash-map (repeat :message) ["foo" "bar" "baz"])

 (mapv (partial assoc {} :message) ["foo" "bar" "baz"])

 (reduce #(conj % {:message %2}) [] ["foo" "bar" "baz"])

我认为A.韦伯提出了一些非常好的选择。
我的建议是为广大读者提供可读性:

 (mapv (fn[x] {:message x}) ["foo" "bar" "baz"])
另外,如果你不需要向量

 (map (fn[x] {:message x}) ["foo" "bar" "baz"])

将被更多的人阅读。

谢谢!我还做了一个:
(map#(hash-map:message%)[“foo”“bar”“baz])
这是纯粹的讽刺吗:D?(如果没有,请使用比
x
更具表现力的参数名称,例如
msg
,以吸引更广泛的受众)。我认为重要的是保持简单。也就是说,使用每个clojure程序员都理解的结构和函数,除非有充分的理由这样做。程序代码的读取频率高于编写频率。不,使用x作为通用函数参数并不具有讽刺意味,因为大多数程序员自然地将它作为一个符号来读取,而不会将它作为他们头脑中的一个单词大声读取。即使对高中生来说,“x的函数”的概念也应该很容易识别。按照Clojure的例子,对于集合,参数不应该是“coll”吗?看,举个例子,我认为这还是太具体了,因为它可能是任何真正的东西。不要说“foo”,你可以有一个整数、一个java对象、一个环响应或任何你喜欢的东西。是的,请随意忽略我上面的评论,我想的是fn,你可能会围绕上面的代码:(