Emacs Lisp में, अगर चर को परिभाषित किया जाता है तो मैं कैसे जांच करूं?


91

Emacs Lisp में, अगर चर को परिभाषित किया जाता है तो मैं कैसे जांच करूं?

जवाबों:


137

आप बाउंड चाहते हैं: यदि वेरिएबल (कोई प्रतीक) शून्य नहीं है, तो रिटर्न अधिक सटीक, यदि इसका वर्तमान बंधन शून्य नहीं है। यह अन्यथा शून्य देता है।

  (boundp 'abracadabra)          ; Starts out void.
  => nil

  (let ((abracadabra 5))         ; Locally bind it.
    (boundp 'abracadabra))
  => t

  (boundp 'abracadabra)          ; Still globally void.
  => nil

  (setq abracadabra 5)           ; Make it globally nonvoid.
  => 5

  (boundp 'abracadabra)
  => t

13
कभी-कभी यह जांचने के लिए भी उपयोगी हो सकता है कि प्रतीक मौजूद है या नहीं।
रेनर जोसविग


4

यदि आप emacs के भीतर से एक वैरिएबल मान की जांच करना चाहते हैं (मुझे नहीं पता कि क्या यह लागू होता है, क्योंकि आपने "Emac Lisp" में लिखा है?):

M-:Evalमिनी बफर में शुरू होता है। वेरिएबल के नाम पर लिखें और रिटर्न को दबाएं। मिनी-बफर वेरिएबल का मान दिखाता है।

यदि चर परिभाषित नहीं है, तो आपको डीबगर त्रुटि मिलती है।


समान रूप से, M-: (boundp 'the-variable-name) RETत्रुटि को ट्रिगर करने की आवश्यकता के बिना जांच करेगा।
रेडॉन रोसबोरो

मुझे पूरा यकीन है कि यह सवाल ईक्स्प स्क्रिप्ट के बारे में है, एमएसीएस के इंटरएक्टिव यूआई के बारे में नहीं।
बिंकी जू

0

याद रखें कि मान शून्य होने वाले चर को परिभाषित किया जा रहा है।

(progn (setq filename3 nil) (boundp 'filename3)) ;; returns t

(progn (setq filename3 nil) (boundp 'filename5)) ;; returns nil
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.