Câu trả lời:
Trên thực tế, có một cách!
(comment
(defn hey []
("Hey there!"))
Check me out!
)
Chỉ cần tóm tắt ý kiến của bạn trong (bình luận ..) :)
Chúc vui vẻ!
Clojure hỗ trợ #_
macro người đọc bỏ qua hoàn toàn biểu mẫu tiếp theo. Điều này được đề cập trên trang về Clojure Reader . Ngoài ra còn có macro chú thích có tác dụng tương tự, nhưng được triển khai khác.
Cả hai điều trên đều yêu cầu rằng thứ mà bạn đang bình luận phải là một biểu thức S chính xác về mặt cú pháp.
Một số phương ngữ Lisp có chú thích nhiều dòng có thể chứa văn bản tùy ý, nhưng tôi không thấy chú thích nào cho Clojure.
*scratch*
bộ đệm, chỉ cần nhập một số mẩu tin rác sau ;
;;
hoặc ;;;
trên nhiều dòng, đặt con trỏ vào từ đầu tiên sau dấu chấm phẩy và nhấn Meta-Q
).
Dấu ngoặc kép (chuỗi ký tự) cho phép thêm văn bản tùy ý (không chỉ các dạng S thích hợp):
(comment "
public class HelloWorld {
public static void main(String[] args) {
System.out.print("Hello, World");
System.out.println();
}
}
")
Hello
, dạng thứ 3 là biểu tượng World
, và dạng thứ 4 là một chuỗi khác. comment
chỉ cần bỏ qua tất cả các hình thức. Vì vậy, trong ví dụ, chúng tôi may mắn rằng Hello, World
phân tích cú pháp là áo choàng hợp pháp. Nó không hoạt động với văn bản tùy ý. Ví dụ, (comment "print("/foo")")
sẽ chết với lỗi Invalid token: /foo
.
Các ví dụ khác rất tuyệt, tôi chỉ muốn thêm một mẹo nữa:
Đôi khi bạn muốn nhận xét một vài dòng mã, nhưng vẫn bị trình biên dịch biên dịch nó và báo cáo bất kỳ lỗi nào (ví dụ: một tập hợp các lệnh trong không gian tên cấp cao nhất mà bạn định thực hiện sau này tại REPL).
Trong trường hợp này, tôi thích bọc mã có (fn [] .....)
nghĩa là nó vẫn được biên dịch, nó chỉ không được gọi.
Xem liên kết này: http://en.wikibooks.org/wiki/Clojure_Programming/Tutorials_and_Tips
Bạn có thể tạo bình luận nhiều dòng bằng cú pháp
(comment .....
....)
Trong Emacs, bạn có thể sử dụng lệnh M-;
(phím tắt cho M-x comment-dwim
). Nó sẽ nhận xét hoặc bỏ ghi chú bất kỳ vùng văn bản / mã nào được đánh dấu, vì vậy, miễn là toàn bộ chức năng hoặc bộ chức năng của bạn được bao gồm trong vùng, bạn có thể nhận xét hoặc bỏ ghi chú vùng đó khá dễ dàng. M-;
Bạn có thể tìm thấy hướng dẫn sử dụng tham chiếu của Emacs cho hàm tại đây .
Có nhiều cách mà tôi biết:
Đầu tiên là sử dụng macro chú thích : nó chỉ không đánh giá tất cả mã bên trong nội dung chú thích (nhưng nó vẫn kiểm tra dấu ngoặc / ngoặc cân bằng). Nếu bạn biết cách của mình với paredit, sẽ không mất nhiều thời gian nếu bạn muốn bình luận một vài cuộc gọi sexp.
(comment
(println 1))
Tuy nhiên, nó vẫn sẽ kiểm tra sự khớp trong dấu ngoặc đơn. Vì vậy, nếu bạn có dấu ngoặc đơn không cân bằng, mã của bạn sẽ không biên dịch (mang lạijava.lang.RuntimeException: EOF while reading
).
Một cách khác là sử dụng #_
(hay còn gọi là macro loại bỏ): nó sẽ loại bỏ sexp tiếp theo, đó là cách mà cá nhân tôi thích hơn (nhập nhanh hơn và thông thường tôi làm điều đó trên sexps khi phải gỡ lỗi):
#_(println 1)
Nó cũng kiểm tra các dấu phân cách chưa khớp: vì vậy nếu bạn có dấu ngoặc đơn không cân bằng, nó cũng sẽ không biên dịch.
Cuối cùng, có một ;
ký tự sẽ bình luận dòng (tương tự như tính năng bình luận các ngôn ngữ khác) và trình biên dịch sẽ bỏ qua nó hoàn toàn. Nếu bạn muốn nhận xét nhiều dòng, bạn cần thêm tất cả các dòng với; , thường là một việc phức tạp, nhưng thông thường các trình soạn thảo văn bản sẽ làm điều đó cho bạn bằng một lệnh sau khi chọn nhiều dòng.
; (println 1)
; (println 1 also won't break
Đối với một khối bình luận dài, Macro #_ hoặc (bình luận ...) không hoạt động độc quyền, sau đó tôi đã chặn bình luận với VSCODE (OS X).