Как мне сделать так, чтобы функция alter function / assoc возвращала nil? - PullRequest
0 голосов
/ 07 октября 2009

У меня действительно огромная хеш-таблица, и всякий раз, когда я пытаюсь изменить хеш, возвращается весь хеш, что приводит к сбою моего REPL. Есть ли способ, которым я могу попросить Clojure просто установить значение и вернуть ноль?

Спасибо.

Ответы [ 2 ]

7 голосов
/ 07 октября 2009

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 голос
/ 07 октября 2009

Нет. Типы данных Clojures неизменны. Также они используют разделяемую структуру, поэтому создание нового значения очень дешево для памяти и производительности. Есть варианты увеличения памяти, доступной для JVM, например, java -server. Также вы можете создавать изменяемые объекты Java, если они вам действительно нужны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...