Ambil contoh makro berikut, didefinisikan dalam macro.el.
(defmacro some-macro (&rest body)
`(let ((some-variable 1))
,@body))
Dan mengambil fungsi berikut, didefinisikan dalam file yang berbeda , function.el.
(defun some-function ()
(some-macro (do-something)))
Kapan function.elbyte-dikompilasi, apakah some-variableakan terikat di bawah lexical atau dynamic binding?
Saya mengerti ini tergantung pada apakah file digunakan -*- lexical-binding: t; -*-, jadi pertanyaan saya secara khusus berkaitan dengan situasi berikut:
- Jika
function.elmenggunakan pengikatan leksikal, tetapimacro.eltidak. - Jika
macro.elmenggunakan pengikatan leksikal, tetapifunction.eltidak.
Apakah ada bedanya jika some-vartelah dinyatakan global (dengan defvar) di dalamnya function.el? Jika ya, saya secara khusus tertarik pada kasus di mana tidak .