Jawaban:
Sebenarnya ada jalan!
(comment
(defn hey []
("Hey there!"))
Check me out!
)
Cukup bungkus komentar Anda di (komentar ..) :)
Selamat bersenang-senang!
Clojure mendukung #_
makro pembaca yang sepenuhnya melompati formulir berikutnya. Ini disebutkan di halaman tentang Pembaca Jubah . Ada juga makro komentar yang memiliki efek serupa, tetapi diterapkan secara berbeda.
Kedua hal di atas mengharuskan hal yang Anda komentari jika tidak adalah ekspresi-S yang benar secara sintaksis.
Beberapa dialek Lisp memiliki komentar multi-baris yang dapat berisi teks sembarang, tetapi saya tidak melihat satu pun untuk Clojure.
*scratch*
buffer, cukup ketik beberapa sampah setelah ;
;;
atau ;;;
di beberapa baris, letakkan kursor di kata pertama setelah titik koma, dan tekan Meta-Q
).
Tanda kutip ganda (string literal) memungkinkan penambahan teks arbitrer (tidak hanya bentuk S yang tepat):
(comment "
public class HelloWorld {
public static void main(String[] args) {
System.out.print("Hello, World");
System.out.println();
}
}
")
Hello
, bentuk ke-3 adalah simbol World
, dan bentuk ke-4 adalah string lainnya. comment
mengabaikan semua bentuk. Jadi dalam contoh ini kami beruntung dapat Hello, World
mengurai sebagai jubah hukum. Itu tidak bekerja dengan teks yang berubah-ubah. Misalnya (comment "print("/foo")")
akan mati dengan error Invalid token: /foo
.
Contoh lain bagus, saya hanya ingin menambahkan satu trik lagi:
Kadang-kadang Anda ingin memberi komentar pada beberapa baris kode, tetapi masih meminta kompilator mengkompilasinya dan melaporkan kesalahan apa pun (misalnya sekumpulan perintah di namespace tingkat atas yang Anda rencanakan untuk dieksekusi nanti di REPL).
Dalam hal ini saya suka membungkus kode (fn [] .....)
yang artinya masih dikompilasi, itu tidak dipanggil.
Lihat tautan ini: http://en.wikibooks.org/wiki/Clojure_Programming/Tutorials_and_Tips
Anda dapat membuat komentar multiline dengan sintaks
(comment .....
....)
Di Emacs Anda dapat menggunakan perintah M-;
(pintasan untuk M-x comment-dwim
). Ini akan mengomentari atau menghapus komentar di wilayah teks / kode yang ditandai, jadi, selama seluruh fungsi atau rangkaian fungsi Anda disertakan di wilayah tersebut, Anda dapat mengomentari atau menghapus komentar di wilayah itu dengan mudah. Panduan referensi Emacs untuk fungsi tersebut M-;
dapat ditemukan di sini .
Ada beberapa cara yang saya tahu:
Yang pertama adalah menggunakan makro komentar : hanya tidak mengevaluasi semua kode di dalam badan komentar (tetapi masih memeriksa tanda kurung / tanda kurung yang seimbang). Jika Anda tahu cara menggunakan paredit, tidak perlu banyak waktu jika Anda ingin berkomentar beberapa panggilan sexp.
(comment
(println 1))
Namun, itu masih akan memeriksa kecocokan tanda kurung. Jadi jika Anda memiliki tanda kurung yang tidak seimbang, kode Anda tidak akan dikompilasi (menghasilkanjava.lang.RuntimeException: EOF while reading
).
Cara lain adalah menggunakan #_
(alias makro buang): ini akan membuang sexp berikutnya, yang merupakan cara saya pribadi lebih suka (lebih cepat untuk mengetik dan biasanya saya melakukannya pada sexps ketika saya harus men-debug):
#_(println 1)
Ini juga memeriksa pembatas yang tidak cocok: jadi jika Anda memiliki tanda kurung yang tidak seimbang, itu tidak akan dapat dikompilasi juga.
Terakhir, ada ;
karakter yang akan mengomentari baris (mirip dengan fitur komentar bahasa lain) dan kompilasi akan mengabaikannya sepenuhnya. Jika Anda ingin mengomentari beberapa baris, Anda perlu menambahkan semua baris dengan; , yang biasanya merepotkan, tetapi biasanya editor teks akan melakukannya untuk Anda dengan perintah setelah memilih beberapa baris.
; (println 1)
; (println 1 also won't break
Untuk blok komentar yang panjang, Makro #_ atau (komentar ...) tidak berfungsi sebagaimana mestinya, maka saya melakukan blok komentar dengan VSCODE (OS X).