निम्नलिखित उदाहरण मैक्रो को लें, जिसमें परिभाषित किया गया है macro.el।
(defmacro some-macro (&rest body)
`(let ((some-variable 1))
,@body))
और निम्नलिखित समारोह, ले एक अलग फाइल में परिभाषित , function.el।
(defun some-function ()
(some-macro (do-something)))
जब function.elबाइट-संकलित किया जाता है, तो some-variableलेक्सिकल या डायनेमिक बाइंडिंग के तहत बाध्य होगा ?
मैं समझता हूं कि यह निर्भर करता है कि फ़ाइल उपयोग करती है या नहीं -*- lexical-binding: t; -*-, इसलिए मेरा प्रश्न विशेष रूप से निम्नलिखित स्थितियों का संबंध है:
- यदि
function.elलेक्सिकल बाइंडिंग का उपयोग करता है, लेकिनmacro.elनहीं करता है। - यदि
macro.elलेक्सिकल बाइंडिंग का उपयोग करता है, लेकिनfunction.elनहीं करता है।
क्या यह एक अंतर है अगर some-varवैश्विक घोषित किया गया है (एक बचाव के साथ) अंदर function.el? यदि ऐसा होता है, तो मुझे उस मामले में विशेष रूप से दिलचस्पी है जहां यह नहीं है ।