Clojure печать со значениями в той же строке, что и ключи - PullRequest
0 голосов
/ 12 сентября 2018

Как я могу довольно распечатать вложенную структуру данных так, чтобы:

  • Значение всегда начинается с той же строки, что и ключ.
  • Ключи всегда находятся на новой строке.

На данный момент я получаю это:

(clojure.pprint/pprint {:id1 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
                        :id2 "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"}))

Печатает значения "aaa ..." и "bbb ..." на новых строках.

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

Вы также можете использовать zprint , который очень старается сохранить значения в тех же строках, что и ключи. Если значение не помещается в той же строке, что и ключ (то есть в пределах текущей "ширины"), оно поместит значение (с отступом по умолчанию) в следующую строку. Вы можете изменить ширину линии, а также изменить, будет ли она вставлять отступы в следующую строку, когда это необходимо.

zprint имеет ряд дополнительных функций для более удобной печати карт (особенно в REPL). Он отсортирует ключи, и вы можете указать определенные ключи, которые будут выводиться первыми. Вы можете покрасить определенные клавиши не так, как другие. Он обладает рядом возможностей, которые позволяют человеку получать больше информации с карты Clojure с меньшими усилиями.

0 голосов
/ 12 сентября 2018

Вы можете установить clojure.pprint/*print-right-margin* на большое число, чтобы оно соответствовало вашему самому длинному значению.

(binding [clojure.pprint/*print-right-margin* 100]
  (clojure.pprint/pprint {:id1 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
                          :id2 "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"}))
#=> {:id1 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
     :id2 "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"}

или сделать какое-то грязное движение и установить эту переменную глобально

(alter-var-root #'clojure.pprint/*print-right-margin* (constantly 100))
(clojure.pprint/pprint {:id1 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
                        :id2 "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"})
#=> {:id1 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
     :id2 "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...