Vector clojure对向量的向量进行分解以返回每个向量

Vector clojure对向量的向量进行分解以返回每个向量,vector,clojure,Vector,Clojure,我对clojure很陌生,语法也很粗糙。我正试图分解一个向量向量 这是我使用的函数的输出: [b 2 3][b 3 7][b 9 8]] 但是,我希望它这样显示输出: [:B23][:B37][:B9 8] 基本上,试图摆脱那些最括号。这可能吗?非常感谢您的帮助:)如果您只需要指定的输出,您当然可以这样做: (apply str (interpose " " [[:b 2 3] [:b 3 7] [:b 9 8]])) ;= "[:b 2 3] [:b 3 7] [:b 9 8]" 这就是诀窍

我对clojure很陌生,语法也很粗糙。我正试图分解一个向量向量

这是我使用的函数的输出: [b 2 3][b 3 7][b 9 8]]

但是,我希望它这样显示输出: [:B23][:B37][:B9 8]


基本上,试图摆脱那些最括号。这可能吗?非常感谢您的帮助:)

如果您只需要指定的输出,您当然可以这样做:

(apply str (interpose " " [[:b 2 3] [:b 3 7] [:b 9 8]]))
;= "[:b 2 3] [:b 3 7] [:b 9 8]"
这就是诀窍。至于解构,如果您有一个函数
f
,它返回
[:b23][:b37][:b9 8]]
,您可以按如下方式使用解构:

(defn f []  ;; something presumably more complicated goes here
    [[:b 2 3] [:b 3 7] [:b 9 8]])

(let [[a b c] (f)]
    (println a b c))
; prints [:b 2 3] [:b 3 7] [:b 9 8]

您对返回向量向量的函数满意吗?当你说你希望它不带最外层的括号显示时,你的意思是你想不带最外层的括号将向量的向量“打印”到屏幕上吗?太好了!非常感谢您的反馈。这确实奏效了。经过一点研究,我还发现我的问题的根源是我在函数中使用了(conj),而不是(concat)。
(apply str(interpose s coll))
只是
(clojure.string/join s coll)
。无论我的clojure代码有多紧凑,我总是发现有一种(在本例中,稍微)更紧凑的方法来完成它!:-)