emacs / elisp: हैश (पाउंड, नंबर साइन, ऑक्टोथॉर्प) प्रतीक किसके लिए उपयोग किया जाता है?


102

यह क्या करता है?

(add-hook 'compilation-mode-hook #'my-setup-compile-mode)

... और क्या यह इससे अलग है

(add-hook 'compilation-mode-hook 'my-setup-compile-mode)

जवाबों:


98

इसमें कोई फर्क नही है:

(eq 'my-add #'my-add)

पैदावार t

#एक के सामने इस्तेमाल किया जा सकता lambdaअभिव्यक्ति बाइट-संकलक कि निम्नलिखित अभिव्यक्ति बाइट संकलित किया जा सकता है यह दर्शाता है, के लिए दस्तावेज़ देख सकेंगे बेनामी कार्य । लेकिन प्रतीक के मामले में संकलन करने के लिए कुछ भी नहीं है।

सामान्य तौर पर, इसका उपयोग मुद्रित प्रतिनिधित्व में बाएं कोण ब्रैकेट (<) के साथ किया जाता है ताकि यह इंगित किया जा सके कि मुद्रित वस्तु एक विवरण है (लेकिन पढ़ा नहीं जा सकता)। उदाहरण के लिए:

#<buffer foo.txt>

इसका उपयोग पाठक द्वारा परिपत्र संरचनाओं का प्रतिनिधित्व करने के लिए निर्माणों में भी किया जाता है। परिपत्र ऑब्जेक्ट के लिए रीड सिंटैक्स के लिए डॉक्स देखें ।

और फिर आपके पास पूर्णांक के लिए आधार को निरूपित करने के लिए इसका उपयोग होता है , जैसे #x2c -> 44

इसके अलावा, मुझे यकीन है।


12
इस लेख के अनुसार , एक #अकेला प्रतीक के लिए आवेदन करने का एक अच्छा कारण यह है कि यदि उस प्रतीक का अपरिभाषित होने पर संकलन समय पर निदान हो जाए।
अजाक

3
यह बिल्कुल सच नहीं है कि "प्रतीक के मामले में संकलन करने के लिए कुछ भी नहीं है।" बाइट कंपाइलर का अर्थ है # 'कार का अर्थ है "मैं हमेशा फ़ंक्शन' फू 'का उल्लेख कर रहा हूं, न कि प्रतीक चिह्नों का।" तब यह वास्तव में बाइट-संकलित आउटपुट में फू की परिभाषा को इनलाइन कर सकता है। (संपादित करें: नहींं, यह वास्तव में गलत है। # 'प्रतीक बाइट-संकलित नहीं किया जाएगा' प्रतीक से किसी भी अलग तरह से - यह सिर्फ इरादे का एक मार्कर है।)
जोनाथन तोमर

11
शायद अभी भी उल्लेख है कि वाक्यविन्यास का प्रतिनिधित्व 'symbolकरता है (quote symbol)और #'symbolप्रतिनिधित्व करता है (function symbol)
ट्रिपल

27

Emacs लिस्प रेफरेंस इंडेक्स में सबसे ऊपर व्यापक सूची मिलनी चाहिए ।

संपादित करें : या उससे भी अधिक सुविधाजनक, Emacs के भीतर से:

  • M-x info RET (जानकारी ब्राउज़र खोलें)

  • d m elisp RET (प्रारंभिक मैनुअल खोलें)

  • I # RET(सूची के लिए प्रविष्टियों को सूचीबद्ध करें #)


25

मुझे यह सवाल मिला कि हैकिंग करते समय मैंने जो कुछ पाया है उसमें हैश का क्या अर्थ है mode-line-format:

#("-%-" 0 3
  (help-echo "Display as tooltip when mouse hovers or with display-local-help."))

जो स्ट्रिंग में पाठ गुणों के लिए उपयोग किया जाने वाला प्रारूप है :

  • "-%-", पाठ को ठीक किया जा सकता है: एक डैश और एक % -construct जिसके परिणामस्वरूप "डैश लाइन मोड के शेष भाग को भरने के लिए पर्याप्त है", जिसके परिणामस्वरूप प्रसिद्ध Emacs हैं ------
  • 0, पहला गुण जिस पर पाठ गुण लागू होते हैं।
  • 3, अंतिम गुण जिस पर पाठ गुण लागू होते हैं, अर्थात संपूर्ण "-%-"
  • (help-echo "..."), एक संपत्ति और उसके तर्क के रूप में एक स्ट्रिंग।

यह propertizeफ़ंक्शन के साथ बनाया जा सकता है :

(propertize "Hover over me!" 'help-echo '"congratulations!")

(सम्मिलित करें ("मुझ पर होवर करें!" "मदद-प्रतिध्वनि" "बधाई!")

जैसा होगा #("Hover over me!" 0 14 (help-echo "Congratulations!")):

छोटा उदाहरण।

यदि आप फ़ॉन्ट लॉक मोड का उपयोग कर रहे हैं, तो buffer-substringकमांड का उपयोग करके कुछ इस तरह का उत्पादन किया जा सकता है:

(buffer-substring 1 28) ; First 27 characters in the current buffer
  #(";; This buffer is for notes"
     0 3
     (fontified t face font-lock-comment-delimiter-face)
     3 27
     (fontified t face font-lock-comment-face))

तो आप कुछ इस तरह बना सकते हैं:

एकाधिक गुणों के लिए संबंधित उचित फ़ंक्शन दिखा रहा है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.