【发布时间】:2014-08-22 11:38:52
【问题描述】:
我正在尝试使用我所谓的“多个键”来访问我认为是“地图”的内容,以提取多个,甚至可能是相同的一些值。
这是我正在尝试做的事情(尝试了很多变体,都不起作用):
(:a :b :c :b :a {:a "a" :b "b" :c "c"})
这是我想要或期望的回应:
"a" "b" "c" "b" "a"
有人知道怎么做吗?
谢谢。
【问题讨论】:
我正在尝试使用我所谓的“多个键”来访问我认为是“地图”的内容,以提取多个,甚至可能是相同的一些值。
这是我正在尝试做的事情(尝试了很多变体,都不起作用):
(:a :b :c :b :a {:a "a" :b "b" :c "c"})
这是我想要或期望的回应:
"a" "b" "c" "b" "a"
有人知道怎么做吗?
谢谢。
【问题讨论】:
这行得通吗? => 显示从我的 REPL 返回的内容。
(map {:a "a" :b "b" :c "c"} [:a :b :c :b :a])
=> ("a" "b" "c" "b" "a")
您也可以将地图用作函数调用,仅供参考。
如果您想避免将键包装在集合中,您可以执行以下操作:
(defn map-seq [m & ks]
(map m ks))
(map-seq {:a "a" :b "b" :c "c"} :a :b :c :b :a)
=> ("a" "b" "c" "b" "a")
【讨论】:
juxt 是正确和正确的答案。它是自我并列的;-)