在Clojure中映射列表时,如何将其与其他文本穿插?
想象一下我有一个像
(def nodes ["a", "b", "c"])
我想转换nodes成以下字符串:
a -> b -> c
我该怎么做?
(apply str (mapcat
(fn [node]
(str node " -> ")
)
nodes
)
)
结果是
"a -> b -> c -> "
我现在可以检查结果字符串是否以 结尾,->如果是,则删除最后一个->.
但这似乎不是很优雅。在 Clojure 中执行此操作的正确方法是什么?
更新 1:
(transduce
(fn [rf]
(fn
([] "")
([result] result)
([result input] (str
result
"->"
input))
)
)
cat
""
nodes
)
结果是
"->a->b->c"
回答
(def nodes ["a" "b" "c"])
(clojure.string/join " -> " nodes) ;; => "a -> b -> c"