निम्नलिखित उदाहरण मैक्रो को लें, जिसमें परिभाषित किया गया है 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
? यदि ऐसा होता है, तो मुझे उस मामले में विशेष रूप से दिलचस्पी है जहां यह नहीं है ।