Візьмемо наступний приклад макросу, визначеного в 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
? Якщо це так, мене спеціально цікавить випадок, коли цього не сталося .