क्लोजर में टिप्पणियाँ ब्लॉक करें


119

मैं Clojure में कई लाइनें कैसे टिप्पणी कर सकता हूं?

जवाबों:


145

असल में, एक रास्ता है!


(comment

(defn hey [] ("Hey there!"))

Check me out! )

बस अपनी टिप्पणी (टिप्पणी ..) में लपेटें :)

मज़े करो!


4
मैंने सोचा था कि आईडी मेरी याद आती है # || # लेकिन यह तरीका बेहतर है
unj2

4
मुझे आशा है कि आप क्लोजर के साथ मज़े कर रहे हैं। :)
Rayne

14
सावधानी का एक शब्द: ऐसा लगता है कि जो कुछ भी एक के अंदर है (टिप्पणी ...) एक उचित रूप होने की आवश्यकता है; उदा। (टिप्पणी नमस्ते: संसार) ठीक है लेकिन (टिप्पणी नमस्ते: संसार) एक अपवाद देता है। [संपादित करें:] ऐसा लगता है कि मुझे इस टिप्पणी को पोस्ट करने से पहले ग्रेग हेवगिल द्वारा उत्तर पढ़ा जाना चाहिए ... ओह ठीक है, मैं इसे वैसे भी छोड़ दूंगा जब कोई ऐसा ही करता है जो मैंने किया था।
पॉल

19
चेतावनी का एक शब्द - (टिप्पणी) मैक्रो शून्य तक फैलता है। एक एकल फ़ॉर्म पर टिप्पणी करने के लिए #_ का उपयोग करें, या #_ (टिप्पणी ...) बिना किसी प्रविष्टि को सम्मिलित किए एकाधिक टिप्पणी करने के लिए।
अपने मॉड का अच्छी तरह से इलाज करें

यह मुझे इस मैक्रो को याद करता है: stackoverflow.com/questions/3732173/…
फेलिप

100

क्लोजर एक #_पाठक मैक्रो का समर्थन करता है जो अगले रूप को पूरी तरह से छोड़ देता है। इस पृष्ठ पर उल्लेख किया गया है के बारे में Clojure Readerटिप्पणी मैक्रो भी है जिसका प्रभाव समान है, लेकिन इसे अलग तरीके से लागू किया जाता है।

उपरोक्त दोनों को यह आवश्यक है कि जिस चीज़ के बारे में आप टिप्पणी कर रहे हैं, वह अन्यथा एक वाक्यात्मक रूप से सही एस-अभिव्यक्ति है।

कुछ लिस्प बोलियों में एक बहु-पंक्ति टिप्पणी है जिसमें मनमाना पाठ शामिल हो सकता है, लेकिन मैं क्लोजर के लिए एक नहीं देखता हूं।


20
क्लोजर मल्टी-लाइन मनमाना-पाठ टिप्पणी फ़ॉर्म मौजूद नहीं है। मैंने # | …… | # टिप्पणियों को जोड़ते हुए एक पैच प्रस्तुत किया, लेकिन इसे एक वांछित विशेषता के रूप में अस्वीकार कर दिया गया था। इसलिए इसके जल्द ही कभी भी जुड़ने की संभावना नहीं है।
अमलॉय

5
@ काम: क्या औचित्य था? बस जरूरत नहीं थी, या कोई आपत्ति थी?
टेड

2
मैं अक्सर साक्षर प्रोग्रामिंग शैली की नकल में लंबी टिप्पणियां लिखता हूं। मैं सिर्फ बहु-भाषी टिप्पणियों को फिर से प्रवाहित करने के लिए emacs का उपयोग करता हूं (में*scratch* बफ़र में, कई लाइनों के बाद ; ;;या उसके बाद कुछ रद्दी टाइप करें ;;;, अर्धविराम के बाद पहले शब्द पर कर्सर रखें और दबाएं Meta-Q)।
Reb.Cabin

25

दोहरे उद्धरण (स्ट्रिंग शाब्दिक) मनमाना पाठ जोड़ने की अनुमति देते हैं (न केवल उचित एस-रूप):

(comment "

public class HelloWorld {
    public static void main(String[] args) {
        System.out.print("Hello, World");
        System.out.println();
    }
}

")

4
अच्छी चाल है कि मेरे लिए काम किया! लेकिन यह कैसे संभव है "हैलो वर्ल्ड" पर उद्धरण से बचने की आवश्यकता नहीं है?
मैराथन

6
यह सिर्फ किस्मत है। इवान का उदाहरण 4 रूपों में आता है: पहला रूप एक स्ट्रिंग है, दूसरा रूप प्रतीक है Hello, तीसरा रूप प्रतीक है World, और 4 वां रूप एक और स्ट्रिंग है। commentबस सभी रूपों को अनदेखा करता है। इसलिए उदाहरण में, हम भाग्यशाली हैं कि Hello, Worldकानूनी क्लोजर के रूप में पर्स करते हैं। यह मनमाना पाठ के साथ काम नहीं करता है। उदाहरण के लिए, (comment "print("/foo")")त्रुटि के साथ मर जाएगा Invalid token: /foo
जॉन विजमैन

17

अन्य उदाहरण महान हैं, मैं सिर्फ एक और चाल जोड़ना चाहूंगा:

कभी-कभी आप कोड की कुछ लाइनों पर टिप्पणी करना चाहते हैं, लेकिन भी संकलक इसे संकलित करते हैं और किसी भी त्रुटि की रिपोर्ट करते हैं (उदाहरण के लिए शीर्ष-स्तरीय नामस्थान में आदेशों का एक समूह जिसे आप बाद में REPL में निष्पादित करने की योजना बनाते हैं)।

इस मामले में मैं कोड को लपेटना पसंद करता हूं, (fn [] .....)जिसका अर्थ है कि यह अभी भी संकलित है, यह सिर्फ कॉल नहीं करता है।



9

Emacs और साइडर का उपयोग करते समय, एक कमांड होती है M-x comment-regionजिसका मैं अक्सर उपयोग करता हूं।


2

Emacs में आप कमांड M-;(शॉर्टकट के लिए M-x comment-dwim) का उपयोग कर सकते हैं । यह पाठ / कोड के किसी भी चिह्नित क्षेत्र पर टिप्पणी करेगा या असहज करेगा, इसलिए, जब तक कि आपके पूरे फ़ंक्शन या फ़ंक्शन का सेट क्षेत्र में शामिल नहीं हो जाता, तब तक आप उस क्षेत्र को काफी आसानी से टिप्पणी या असहज कर सकते हैं। समारोह के लिए Emacs संदर्भ मैनुअल यहांM-; पाया जा सकता है


2

वहाँ कई तरीके हैं जो मुझे पता है:

पहले एक टिप्पणी मैक्रो का उपयोग कर रहा है : यह केवल टिप्पणी बॉडी के अंदर सभी कोड का मूल्यांकन नहीं करता है (लेकिन यह अभी भी संतुलित कोष्ठक / कोष्ठक के लिए जाँच करता है)। यदि आप अपने तरीके को पैराडिट के साथ जानते हैं, तो यदि आप कुछ सेक्सप कॉल्स कमेंट करना चाहते हैं तो आपको ज्यादा समय नहीं लगेगा।

(comment 
 (println 1))

हालाँकि, यह अभी भी कोष्ठक मिलान के लिए जाँच करेगा। इसलिए यदि आपके पास असंतुलित कोष्ठक है, तो आप कोड (पैदावार) नहीं करेंगेjava.lang.RuntimeException: EOF while reading ) का ।

एक और तरीका उपयोग कर रहा है #_(उर्फ मैक्रो को त्यागें): यह अगले सेक्सप को त्याग देगा, जिस तरह से मैं व्यक्तिगत रूप से पसंद करता हूं (तेजी से टाइप करने के लिए और आम तौर पर मैं उस पर सेक्स करता हूं जब मुझे डिबग करना पड़ता है):

#_(println 1)

यह बेजोड़ सीमांकक के लिए भी जाँच करता है: इसलिए यदि आपके पास असंतुलित कोष्ठक है, तो यह भी संकलित नहीं होगा।

अंत में, ऐसा ;चरित्र है जो लाइन पर टिप्पणी करेगा (अन्य भाषाओं की कमेंटरी सुविधा के समान) और संकलन इसे पूरी तरह से अनदेखा करेगा। यदि आप कई पंक्तियों पर टिप्पणी करना चाहते हैं, तो आपको सभी पंक्तियों को प्रस्तुत करना होगा; , जो आम तौर पर एक परेशानी है, लेकिन आमतौर पर टेक्स्ट एडिटर कई लाइनों का चयन करने के बाद एक कमांड के साथ आपके लिए करेंगे।

;  (println 1)
;  (println 1 also won't break

0

एक लंबी टिप्पणी ब्लॉक के लिए, मैक्रों #_ या (टिप्पणी ...) ने स्वामित्व के रूप में काम नहीं किया, फिर मैंने VSCODE (OS X) के साथ टिप्पणी ब्लॉक की।

  1. टिप्पणी ब्लॉक को हाइलाइट करें।
  2. vscode में कमांड + शिफ्ट + p दबाएं।
  3. "लाइन टिप्पणी जोड़ें" खोजें
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.