ฉันมีข้อผิดพลาดในหนึ่งในส่วนขยายของฉันซึ่งในที่สุดก็กลายเป็นว่าเกิดจากการsetไม่ทำงานตามที่ฉันคาดไว้:
;; -*- lexical-binding: t -*-
(let ((a nil))
(setq a t)
(print a))
(let ((a nil))
(set 'a t)
(print a))
เมื่อทำงานกับงานemacs -Q --batch -l temp.elพิมพ์:
t
nil
ดูเหมือนว่าฉันจะแปลกมาก ผมก็รู้สึกว่าเป็นชวเลข(setq a b) (set 'a b)เกิดอะไรขึ้น?