向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,你可能会围绕上面的代码:(