一千萬個為什麽

搜索

Emacs Lisp:在alist中評估變量

這可能很愚蠢,但我沒有足夠的Elisp知識來了解引用和評估方面的情況。

假設我有這個Elisp代碼:

(add-to-list 'default-frame-alist '(width . 100))
(add-to-list 'default-frame-alist '(height . 50))

它會導致預期的默認幀一阿爾斯特值:

((height 50)
 (width 100))

但是現在如果我有這個:

(setq my-frame-width 100)
(setq my-frame-height 50)
(add-to-list 'default-frame-alist '(width . my-frame-width))
(add-to-list 'default-frame-alist '(height . my-frame-height))

這將導致 -

((height my-frame-height)
 (width my-frame-width))

並從框架幾何判斷,從不評估這些變量。我如何讓這個alist中出現my-frame-width和height的實際值?我有太多報價嗎?但我無法從添加到列表評估中刪除任何內容...

最佳答案

嘗試這個:

(setq my-frame-width 100)
(setq my-frame-height 50)
(add-to-list 'default-frame-alist `(width . ,my-frame-width))
(add-to-list 'default-frame-alist `(height . ,my-frame-height))

使用反引號而不是引號,可以使用強制評估參數。

請參閱Elisp參考手冊。鍵入C-x信息,搜索elisp參考手冊,然後在其中搜索反引用。

轉載註明原文: Emacs Lisp:在alist中評估變量