【问题标题】:str makes a string of its enclosed mapstr 将其封闭的映射串成一个字符串
【发布时间】:2014-04-12 10:52:57
【问题描述】:

当我在str 中使用map 时,我得到clojure.lang.LazySeq 的字符串化。

user=> (str (map inc (range 3)))
"clojure.lang.LazySeq@7861"

我已经找到并尝试了很多答案 - applydoalldoseq、不同的映射、映射使用 doall 和其他东西的自定义函数、尝试不同的 repls 等 - 但不能似乎在被字符串化之前让map 进行评估。

更新:这也应该适用于str 的更一般情况:

user=> (str "pre string " (map inc (range 3)) " post string")

期望的输出:

user=> "pre string 123 post string"

【问题讨论】:

  • 向我们展示您想要的输出。
  • 请将(str "pre string " (map inc range 3) " post string")中的(map inc range 3)更改为(map inc (range 3))

标签: map clojure lazy-evaluation


【解决方案1】:

你需要这样的东西吗?

(apply str (map inc (range 3)))
=> "123"

向我们展示您想要的输出,以确保我们在同一页面上。

不过,我不知道你想要的输出是什么。

(str "pre string " (apply str (map inc (range 3))) " post string")
=> "pre string 123 post string"

【讨论】:

  • 这适用于str 的这种特定用途。对于更一般的用例,我也需要它。我已经用附加信息更新了问题。
  • 这样就解决了。你得到了想要的输出,即使我还没有发布它。为了后代,我编辑了问题以添加它。谢谢!
【解决方案2】:

使用 seq

(str (seq (map inc (range 3))))
"(1 2 3)"

【讨论】:

  • 当我想要打印表单本身时,这是一个很好的解决方案。谢谢!
猜你喜欢
  • 2016-05-10
  • 2019-08-01
  • 2013-09-26
  • 2012-08-21
  • 2011-01-18
  • 1970-01-01
  • 2018-10-18
  • 2012-01-23
  • 1970-01-01
相关资源
最近更新 更多