如何在Clojure中打印到stdout而不返回nil

时间:2014-03-10 05:41:42

标签: browser clojure io string-formatting println

我正在建立一个网站,我想知道是否有任何方法可以从一个向量中返回一个整数字符串,每个整数都在各自的行中。当我修改我的代码以使用apply str到输出时,我可以在浏览器中得到一个来自此的东西 - > [1 2 3 4]到此 - > 1 2 3 4.但我希望它看起来像这样:

1
2
3
4 
.
.
.

当我尝试使用println,pprint或format将每个元素放在自己的行上时,我在浏览器的结果标题下看到空白。我认为这是因为所有这些都返回零。有没有办法获得我需要的格式,以便我的输出结果可以很容易地复制并粘贴到excel文件中,而无需用户手动格式化?

2 个答案:

答案 0 :(得分:2)

如果您明确要查看可以通过Excel读取的csv数据,我建议您查看其中一个CSV库,例如data.csv。这些库不仅可以将格式化数据作为字符串处理,还可以将CSV中的实际相当棘手的规则处理起来。

根据某些csv数据获取字符串的示例:

user=> (def data [[1 2] [2 3] [3 4] [4 5]])
#'user/data
user=> (with-out-str (write-csv *out* data))
"1,2\n2,3\n3,4\n4,5\n"

如果你想狭隘地约束你列出的问题,那么(多种方式)的一种方法是在每个数据片段之间交错无限的新行序列:

user=> (def data [1 2 3 4])
#'user/data
user=> (apply str (interleave data (repeat \newline)))
"1\n2\n3\n4\n"

答案 1 :(得分:2)

我明白了!由于我正在使用打嗝,因此可以这样做:

[:p (interpose [:br]
      (process-grades (clojure.edn/read-string weights) (clojure.edn/read-string grades)))]

并使输出向量中的每个元素在浏览器中自己呈现。