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-variable
bị 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.el
sử dụng ràng buộc từ vựng, nhưngmacro.el
không. - Nếu
macro.el
sử dụng ràng buộc từ vựng, nhưngfunction.el
khô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.el
không? Nếu có, tôi đặc biệt quan tâm đến trường hợp không có .