Lấy macro ví dụ sau, được định nghĩa trong macro.el.
(defmacro some-macro (&rest body)
`(let ((some-variable 1))
,@body))
Và mất chức năng sau đây, được định nghĩa trong một tập tin khác nhau , function.el.
(defun some-function ()
(some-macro (do-something)))
Khi function.elđược biên dịch byte, sẽ some-variablebị ràng buộc theo ràng buộc từ vựng hoặc động?
Tôi hiểu điều này phụ thuộc vào việc tệp có sử dụng hay không -*- lexical-binding: t; -*-, vì vậy câu hỏi của tôi liên quan cụ thể đến các tình huống sau:
- Nếu
function.elsử dụng ràng buộc từ vựng, nhưngmacro.elkhông. - Nếu
macro.elsử dụng ràng buộc từ vựng, nhưngfunction.elkhông.
Liệu nó có làm nên sự khác biệt nếu some-varđã được tuyên bố toàn cầu (với một defvar) bên trong function.elkhông? Nếu có, tôi đặc biệt quan tâm đến trường hợp không có .