Yanıtlar:
Aslında bir yol var!
(comment
(defn hey []
("Hey there!"))
Check me out!
)
Yorumlarınızı (yorum ..) :)
İyi eğlenceler!
Clojure #_
, sonraki formu tamamen atlayan bir okuyucu makrosunu destekler . Bu Clojure Reader hakkında sayfada belirtilmiştir . Orada da açıklama makro benzer bir etkiye sahiptir, fakat farklı uygulanmıştır.
Yukarıdakilerin her ikisi de, yorum yaptığınız şeyin, aksi halde sözdizimsel olarak doğru bir S-ifadesi olmasını gerektirir.
Bazı Lisp lehçelerinin rastgele metin içerebilen çok satırlı bir yorumu vardır, ancak Clojure için bir yorum göremiyorum.
*scratch*
arabellekte, sadece birkaç satırdan sonra ;
;;
veya ;;;
birden fazla önemsiz yazın , imleci noktalı virgüllerden sonraki ilk sözcüğe getirin ve tuşuna basın Meta-Q
).
Çift tırnak (dize değişmez) rastgele metin eklemeye izin verir (yalnızca uygun S formları değil):
(comment "
public class HelloWorld {
public static void main(String[] args) {
System.out.print("Hello, World");
System.out.println();
}
}
")
Hello
, üçüncü biçim semboldür World
ve dördüncü biçim başka bir dizedir. comment
sadece tüm formları görmezden geliyor. Bu yüzden, örnekte Hello, World
yasal gizlenme olarak ayrıştırılan şanslıyız . Keyfi metinlerle çalışmaz. Örneğin (comment "print("/foo")")
, hata ile ölecek Invalid token: /foo
.
Diğer örnekler harika, sadece bir numara daha eklemek istiyorum:
Bazen birkaç satır kod hakkında yorum yapmak istersiniz, ancak yine de derleyicinin onu derlemesini ve herhangi bir hatayı rapor etmesini istersiniz (örneğin, daha sonra REPL'de yürütmeyi planladığınız üst düzey bir ad alanında bir dizi komut).
Bu durumda kodu sarmaktan hoşlanıyorum, bu da kodun (fn [] .....)
hala derlendiği anlamına geliyor, sadece çağrılmıyor.
Bu bağlantıya bakın: http://en.wikibooks.org/wiki/Clojure_Programming/Tutorials_and_Tips
Sözdizimi ile çok satırlı yorumlar oluşturabilirsiniz
(comment .....
....)
Emacs'ta komutu M-;
(kısayolu M-x comment-dwim
) kullanabilirsiniz. Metnin / kodun işaretli herhangi bir bölgesini yorumlayacak veya açıklamasını kaldıracaktır, böylece tüm işleviniz veya işlevler setiniz bölgeye dahil olduğu sürece, o bölgeye kolayca yorum yapabilir veya açıklamayı kaldırabilirsiniz. İşleve ilişkin Emacs başvuru kılavuzu buradaM-;
bulunabilir .
Bildiğim birçok yol var:
İlki kullanıyor açıklama makro: sadece gelmez değil comment vücudun içinde tüm kodu değerlendirir (ama dengeli parantez / parantez için hala çekler). Paredit ile yolunuzu biliyorsanız, birkaç sexp çağrısına yorum yapmak istiyorsanız fazla zaman almayacaktır.
(comment
(println 1))
Ancak yine de parantez eşleşmesini kontrol edecektir. Dolayısıyla, dengesiz paranteziniz varsa, kodunuz derlenmez (sonuç verir java.lang.RuntimeException: EOF while reading
).
Başka bir yol kullanmaktır #_
(aka atma makrosu): bir sonraki sexp'i atar, ki bu kişisel olarak tercih ettiğim yöntemdir (yazmak için daha hızlıdır ve normalde hata ayıklamam gerektiğinde bunu sexps üzerinde yaparım):
#_(println 1)
Aynı zamanda eşleşmeyen sınırlayıcıları da denetler: yani eğer dengesiz paranteziniz varsa, o da derlenmez.
Son olarak, ;
satırı yorumlayacak karakter var (diğer dillerin yorum özelliğine benzer) ve derleme onu tamamen yok sayacak. Birden fazla satırı yorumlamak istiyorsanız, tüm satırların başına; , bu normalde bir güçlüktür, ancak genellikle metin editörleri bunu birden fazla satırı seçtikten sonra bir komutla sizin için yapar.
; (println 1)
; (println 1 also won't break
Uzun bir yorum bloğu için, Makrolar #_ veya (yorum ...) uygun şekilde çalışmadı, sonra VSCODE (OS X) ile yorum bloğu yaptım.