我有一个叫做历史的原子:
(def history (atom []))
我想要它持有向量的向量。每个向量都是一个"命令"历史向量按顺序保存所有命令的历史记录:
(swap! history conj current-command)
我希望它看起来像:
[["move" 20] ["turn" 90]]
但目前形式为:
atom[[["move" 20] ["turn" 90] ["turn" 120]]]
我可以提供一些有关如何将其展平为[["move" 20] ["turn" 90]]
答案 0 :(得分:3)
历史原子的初始值可能不合适
(def history (atom []))
(swap! history conj ["move" 20])
(swap! history conj ["move" 30])
(swap! history conj ["turn" 50])
; [[move 20] [move 30] [turn 50]]
(first @history)
; ["move" 20]
修改强>
(println history)
; atom[[["move" 20] ["turn" 90] ["turn" 120]]]
; but an atom's value should be accessed using the @ mark
(println @history)
; [["move" 20] ["turn" 90] ["turn" 120]]
答案 1 :(得分:2)
你不需要压扁它。你有一个向量包含你想要的矢量作为它的第一个也是唯一的元素。先使用:
user> (first [[["move" 20] ["turn" 90] ["turn" 120]]])
[["move" 20] ["turn" 90] ["turn" 120]]
问题是为什么你首先得到嵌套的矢量。你能分享一小段代码来生成带有额外嵌套的向量吗?