Tôi đã gặp một lỗi trong một trong các tiện ích mở rộng của mình mà cuối cùng hóa ra là do set
không hoạt động như tôi mong đợi:
;; -*- lexical-binding: t -*-
(let ((a nil))
(setq a t)
(print a))
(let ((a nil))
(set 'a t)
(print a))
khi chạy với emacs -Q --batch -l temp.el
bản in:
t
nil
Điều này có vẻ rất lạ đối với tôi. Tôi đã có ấn tượng đó (setq a b)
là tốc ký (set 'a b)
. Chuyện gì đang xảy ra vậy?