【发布时间】:2014-05-01 05:37:16
【问题描述】:
this question的答案解释了如何将映射、序列等转换为各种序列和集合,但不说如何将映射转换为交替键和值的序列。这是一种方法:
(apply concat {:a 1 :b 2})
=> (:b 2 :a 1)
有些人可能天真地认为会产生相同结果的替代方案,但不要这样做,包括将地图传递给vec、vector、seq、sequence、into []、into () 和flatten。 (有时尝试比思考更容易。)
还有什么比apply concat更简单的吗?
【问题讨论】:
-
“更简单”对您意味着什么?为什么你想要更简单的解决方案?
apply concat至少对我来说似乎是非常简单的解决方案。 -
apply concat很好,@ymonad。我不需要更简单的解决方案。通常会发现有一个 Clojure 函数可以做一些简单而明显的事情(在这种情况下,将映射转换为序列),而人们没有意识到会产生这种效果。了解这些选项很有帮助。 (我还想,一般来说,我觉得使用apply除非你有一个集合参数,它通常是一个列表的rest,在它的first中有一个函数,我不知道...,美学上令人不快。) -
急切转换为交替键和值的向量:
(reduce into {:a 1 :b 2})。
标签: clojure