gpt4 book ai didi

clojure - 在 Clojure 中打印原始数组

转载 作者:行者123 更新时间:2023-12-04 00:42:45 24 4
gpt4 key购买 nike

我在 REPL,我创建了一个 java 数组:

=> (def arr (double-array [1 2 3]))

当然,如果我想看看我的 arr ,我得到:
=> arr
#<double[] [D@2ce628d8>

有什么我可以做的,可以让 java 原语数组像 clojure 一样打印 persistentVector ?
=> arr
[1.0 2.0 3.0]

我知道我可以将我的数组包装在某种不错的打印函数中(这是我目前所做的),但是在例如向量是 map 的一部分的情况下,这很痛苦:
=> my-map
{"1" #<double[] [D@47254e47>, "2" #<double[] [D@11d2625d>}

最佳答案

像下面这样简单的事情会做吗?

user=> (seq arr)
(1.0 2.0 3.0)

如果它仅用于 REPL,那么技术语义可能无关紧要。

更新

事实证明, pretty-print (pprint) 可以很好地处理您的矢量 map :
user=> (def my-map {"1" (double-array [1 2 3])
"2" (double-array [1 2 3])})
#'user/my-map
user=> (pprint my-map)
{"1" [1.0, 2.0, 3.0], "2" [1.0, 2.0, 3.0]}

最后更新:来自评论中链接的 Google Groups 讨论

发问者在下面转述的讨论中找到了他喜欢的答案:

> Is there any way to make the Clojure repl pretty-print by default?

Try:

(clojure.main/repl :print pprint)

> Thank you! That is exactly what I needed.

关于clojure - 在 Clojure 中打印原始数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8390983/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com