如何使alter function / assoc函数返回nil?

时间:2009-10-07 11:01:06

标签: clojure

我有一个非常庞大的哈希表,每当我尝试更改哈希时,都会返回整个哈希值,这会导致我的REPL崩溃。有没有办法可以让Clojure设置值并返回nil?

谢谢。

2 个答案:

答案 0 :(得分:7)

dorun始终返回nil

(dorun (alter ...))

如果您只想阻止REPL打印大量数据结构,请使用*print-level**print-length*

user> (set! *print-level* 2)
2
user> {:foo {:bar {:baz {:quux 1}}}}
{:foo {:bar #}}
user> (set! *print-length* 2)
2
user> (range 100)
(0 1 ...)

答案 1 :(得分:1)

没有。 Clojures数据类型是不可变的。它们也使用共享结构,因此实际创建新值对于内存和性能来说非常便宜。有一些选项可以增加JVM可用的内存,例如java -server。如果你真的需要它们,你也可以创建可变的Java对象。