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.el
byte-dikompilasi, apakah some-variable
akan 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.el
menggunakan pengikatan leksikal, tetapimacro.el
tidak. - Jika
macro.el
menggunakan pengikatan leksikal, tetapifunction.el
tidak.
Apakah ada bedanya jika some-var
telah dinyatakan global (dengan defvar) di dalamnya function.el
? Jika ya, saya secara khusus tertarik pada kasus di mana tidak .