Как прокомментировать несколько строк в Clojure?
119
Собственно, выход есть!
(comment
(defn hey []
("Hey there!"))
Check me out!
)
Просто оберните свои комментарии в (комментарий ..) :)
Радоваться, веселиться!
Clojure поддерживает
#_
макрос чтения, который полностью пропускает следующую форму. Об этом упоминается на странице о Clojure Reader . Также существует макрос комментария, который имеет аналогичный эффект, но реализован по-другому.Оба вышеперечисленного требуют, чтобы комментируемая вами вещь была синтаксически правильным S-выражением.
Некоторые диалекты Лиспа имеют многострочный комментарий, который может содержать произвольный текст, но я не вижу его для Clojure.
источник
*scratch*
буфере просто набираю мусор после;
;;
или;;;
на нескольких строках, помещаю курсор на первое слово после точки с запятой и нажимаюMeta-Q
).Двойные кавычки (строковый литерал) позволяют добавлять произвольный текст (не только правильные S-формы):
источник
Hello
, третья форма - это символWorld
и четвертая форма - это еще одна строка.comment
просто игнорирует все формы. Итак, в этом примере нам повезло, что онHello, World
разбирается как законное закрытие. Не работает с произвольным текстом. Например,(comment "print("/foo")")
умрет с ошибкойInvalid token: /foo
.Другие примеры отличные, я просто хочу добавить еще одну хитрость:
Иногда вы хотите закомментировать несколько строк кода, но все же компилятор скомпилирует его и сообщит о любых ошибках (например, о наборе команд в пространстве имен верхнего уровня, которые вы планируете выполнить позже в REPL).
В этом случае мне нравится заключать код в оболочку,
(fn [] .....)
что означает, что он все еще компилируется, он просто не вызывается.источник
См. Эту ссылку: http://en.wikibooks.org/wiki/Clojure_Programming/Tutorials_and_Tips
Вы можете создавать многострочные комментарии с синтаксисом
источник
При использовании emacs и сидра
M-x comment-region
я часто использую команду .источник
В Emacs вы можете использовать команду
M-;
(ярлык дляM-x comment-dwim
). Он будет комментировать или раскомментировать любую отмеченную область текста / кода, поэтому, пока вся ваша функция или набор функций включены в область, вы можете легко прокомментировать или раскомментировать эту область. Справочное руководство Emacs для этой функцииM-;
можно найти здесь .источник
Я знаю несколько способов:
Во-первых, используется макрос комментария : он только не оценивает весь код внутри тела комментария (но по-прежнему проверяет наличие сбалансированных скобок / скобок). Если вы знаете свой путь с paredit, это не займет много времени, если вы захотите прокомментировать несколько вызовов sexp.
Однако он все равно будет проверять соответствие скобок. Поэтому, если у вас несбалансированные круглые скобки, ваш код не будет компилироваться (давая
java.lang.RuntimeException: EOF while reading
).Другой способ - использовать
#_
(также известный как макрос discard): он отбрасывает следующий sexp, что я лично предпочитаю (быстрее набирать, и обычно я делаю это на sexps, когда мне нужно отлаживать):Он также проверяет наличие несовпадающих разделителей: поэтому, если у вас несбалансированные круглые скобки, он также не будет компилироваться.
Наконец, есть
;
символ, который будет комментировать строку (аналогично функциям комментариев на других языках), и компиляция полностью его проигнорирует. Если вы хотите прокомментировать несколько строк, вам нужно добавить перед всеми строками; , которые обычно доставляют хлопот, но обычно текстовые редакторы сделают это за вас с помощью команды после выбора нескольких строк.источник
Для длинного блока комментариев макросы #_ или (комментарий ...) не работали должным образом, затем я сделал блок комментариев с помощью VSCODE (OS X).
источник