Nehmen Sie das folgende Beispielmakro, definiert in macro.el
.
(defmacro some-macro (&rest body)
`(let ((some-variable 1))
,@body))
Nehmen Sie die folgende Funktion, die in einer anderen Datei definiert ist function.el
.
(defun some-function ()
(some-macro (do-something)))
Wann function.el
wird Byte kompiliert, wird some-variable
unter lexikalischer oder dynamischer Bindung gebunden?
Ich verstehe, dass dies davon abhängt, ob die Datei verwendet -*- lexical-binding: t; -*-
wird. Meine Frage bezieht sich daher speziell auf die folgenden Situationen:
- Wenn
function.el
lexikalische Bindung verwendet, abermacro.el
nicht. - Wenn
macro.el
lexikalische Bindung verwendet, aberfunction.el
nicht.
Macht es einen Unterschied, ob some-var
es im Inneren als global (mit einer Defvar) deklariert wurde function.el
? Wenn ja, interessiert mich speziell der Fall, in dem dies nicht der Fall ist .