Ответ 1
Собственно, есть способ!
(comment
(defn hey []
("Hey there!"))
Check me out!
)
Просто обведите свои комментарии в (комментарий..):)
Удачи!
Как я могу прокомментировать несколько строк в Clojure?
Собственно, есть способ!
(comment
(defn hey []
("Hey there!"))
Check me out!
)
Просто обведите свои комментарии в (комментарий..):)
Удачи!
Clojure поддерживает макрос чтения #_
, который полностью пропускает следующую форму. Об этом говорится на странице Clojure Reader. Существует также макрос комментариев , который имеет аналогичный эффект, но реализуется по-разному.
Оба вышеуказанных требуют, чтобы то, что вы комментируете, в остальном является синтаксически правильным S-выражением.
Некоторые диалекты Lisp имеют многострочный комментарий, который может содержать произвольный текст, но я не вижу его для Clojure.
Двойные кавычки (строковый литерал) позволяют добавлять произвольный текст (а не только собственные S-формы):
(comment "
public class HelloWorld {
public static void main(String[] args) {
System.out.print("Hello, World");
System.out.println();
}
}
")
Другие примеры великолепны, я просто хотел бы добавить еще один трюк:
Иногда вам нужно прокомментировать несколько строк кода, но компилятор все еще компилирует и сообщает о любых ошибках (например, набор команд в пространстве имен верхнего уровня, которое вы планируете выполнить позже в REPL).
В этом случае мне нравится обертывать код с помощью (fn [] .....)
, что означает, что он все еще компилируется, он просто не вызван.
Смотрите эту ссылку: http://en.wikibooks.org/wiki/Clojure_Programming/Tutorials_and_Tips
Вы можете создавать многострочные комментарии с синтаксисом
(comment .....
....)
При использовании emacs и сидра есть команда M-x comment-region
, которую я часто использую.
В Emacs вы можете использовать команду M-;
(ярлык для M-x comment-dwim
). Он будет комментировать или раскомментировать любую отмеченную область текста/кода, поэтому, если ваша функция или набор функций включены в регион, вы можете легко или частично комментировать или раскомментировать этот регион. Справочное руководство Emacs для функции M-;
можно найти здесь.
Я знаю несколько способов:
Сначала используется макрос comment: он только не оценивает весь код внутри (но он все еще проверяет наличие скобок/скобок). Если вы знаете свой путь с paredit, это не займет много времени, если вы хотите прокомментировать несколько звонков sexp.
(comment
(println 1))
Тем не менее, он все равно будет проверять соответствие скобок. Поэтому, если у вас есть несбалансированная скобка, код не будет компилироваться (уступая java.lang.RuntimeException: EOF while reading
).
Другой способ - использовать #_
(также известный как макрос отбрасывания): он отменит следующий sexp, который я предпочитаю (быстрее набирать, и обычно я делаю это на sexps, когда мне приходится отлаживать):
#_(println 1)
Он также проверяет несогласованные разделители: поэтому, если у вас есть несбалансированная скобка, она также не будет компилироваться.
Наконец, есть символ ;
, который будет комментировать строку (аналогичную функции комментариев других языков), и компилятор полностью ее игнорирует. Если вы хотите прокомментировать несколько строк, вам нужно добавить все строки;, которые обычно представляют собой проблему, но обычно текстовые редакторы будут делать это для вас с помощью команды после выбора нескольких строк.
; (println 1)
; (println 1 also won't break