这可能是一个常见的问题,或者我不应该使用展平,但我不完全理解发生了什么?
我们的想法是采用二维向量[[x][y][z]]
并返回单维集合(现在不关心什么形式,例如(x y z)
和[x y z]
现在都很好。
但是,如果我执行以下操作(subbed
是2d向量:
(let [flat-coll (flatten subbed)
header-less (subvec flat-coll 0 (count flat-coll))]
...
)
flat-col
的值为realized = 0
,我希望它是展平集合的值。
我想它是懒惰的,是否有更好的'实现我想要的方式?
答案 0 :(得分:1)
flat-coll
是seq,因为flatten
返回seq,因此subvec不起作用
获取(take 3 (flatten [ [1] [2] [3] ]))
header-less
怎么样?
虽然我并不明白你的目标是什么,因为你无论如何都会得到所有元素。
也许您想要(vec (flatten [ [1] [2] [3] ]))
来获取矢量?
答案 1 :(得分:1)
如果你只想要一个矢量作为结果,你可以使用传感器来展平:
(into [] cat [[2] [3]])
;=> [2 3]
如果你还想摆脱头脑:
(into [] (comp cat (drop 1)) [[2] [3] [8]])
;=> [3 8]
答案 2 :(得分:0)
如果您不关心矢量或列表,也可以这样做:
user=> (apply concat [[:x][:y][:z]])
(:x :y :z)
返回一个懒惰的序列。