Map str生成其封闭映射的字符串
当我Map str生成其封闭映射的字符串,map,clojure,lazy-evaluation,Map,Clojure,Lazy Evaluation,当我mapinsidestr时,我得到了clojure.lang.LazySeq的字符串化 user=> (str (map inc (range 3))) "clojure.lang.LazySeq@7861" 我已经找到并尝试了许多答案-apply,doall,doseq,不同的映射,映射使用doall和其他东西的自定义函数,尝试不同的repl,等等-但似乎无法在字符串化之前将map转换为eval 更新:这也适用于str: user=> (str "pre string " (
map
insidestr
时,我得到了clojure.lang.LazySeq
的字符串化
user=> (str (map inc (range 3)))
"clojure.lang.LazySeq@7861"
我已经找到并尝试了许多答案-apply
,doall
,doseq
,不同的映射,映射使用doall
和其他东西的自定义函数,尝试不同的repl,等等-但似乎无法在字符串化之前将map
转换为eval
更新:这也适用于str
:
user=> (str "pre string " (map inc (range 3)) " post string")
期望输出:
user=> "pre string 123 post string"
你需要这样的东西吗
(apply str (map inc (range 3)))
=> "123"
向我们显示所需的输出,以确保我们在同一页上
不过,我不知道你想要的输出是什么
(str "pre string " (apply str (map inc (range 3))) " post string")
=> "pre string 123 post string"
使用seq
这适用于
str
的这种特定用法。对于更一般的用例,我也需要它。我已经用附加信息更新了这个问题。这就解决了它。你得到了想要的输出,尽管我还没有发布。为了子孙后代,我编辑了这个问题来添加它。谢谢显示您所需的输出。请在(str“pre-string”(map-inc-range 3)“post-string”)中将(map-inc-range 3)
更改为(map-inc-range 3))
。
这是一个很好的解决方案,可用于打印表单本身。谢谢
(str (seq (map inc (range 3))))
"(1 2 3)"