【发布时间】:2012-07-08 21:20:32
【问题描述】:
我想连接存储在向量中的字符串。例如,如果我在向量中有["a" "b" "c"],我想得到"abc"的结果。
【问题讨论】:
我想连接存储在向量中的字符串。例如,如果我在向量中有["a" "b" "c"],我想得到"abc"的结果。
【问题讨论】:
您可以将apply 与str 函数一起使用:
(apply str ["a" "b" "c"])
【讨论】:
interpose因此(apply str (interpose "," ["a" "b" "c"])) => "a,b,c"
clojure.string/join,而不是apply str 与interpose 结合使用。后者使用更多的分配。如果您想在将集合转换为字符串之前对其进行更多更改,interpose 是最好的选择。
您可以为此使用clojure.string join 函数
(clojure.string/join ["a" "b" "c"])
【讨论】:
map做到这一点?
str 是更好的解决方案?我来到这里是为了寻找这个问题的答案。 :-)
join 中,coll 中的每个项目都对 (.append sb "") 进行了多余的调用,而 str 中没有这样做。
这是 Clojure 的 reduce 可以使用的方法之一。请注意 Clojure 的 REPL 上的会话:
[dsm@localhost:~]$ clj
Clojure 1.4.0
user=> (reduce str ["a" "b" "c"])
"abc"
user=>
【讨论】:
apply str有什么优势吗?
apply 不同的是,它适用于采用固定数量参数的函数