2012-01-21 32 views
6

是否可以編寫例如一個Vector變量,裏面使用了一個變量,以便變量得到正確的計算,並且生成的Vector不僅包含變量的名稱/符號?如何在Emacs Lisp文字中使用變量名?

例如:

(setq inner ["d" "e"]) 
["a" "b" inner] 

結果爲:

["a" "b" inner] 

但我希望是:

[ 「A」 「B」[ 「d」, 「E」] ]

我在Elisp之前做了一些Clojure編碼,它的工作原理與我預想的一樣:

(def inner ["d" "e"]) 
user=> ["a" "b" inner]    
["a" "b" ["d" "e"]] 

在這裏我不瞭解Elisp的基本知識是什麼?我當然可以解決這個問題,但我想知道發生了什麼。

回答

12

使用矢量語法時,元素被視爲常量。從的Emacs Lisp參考手冊6.4:

一種載體,如字符串或數字,被認爲是一個常數 評估:評估是同一矢量的結果。 不會評估甚至檢查矢量的元素。

在另一方面,你可以使用vector函數來創建其中的元素進行評估向量:

(setq inner ["d" "e"]) 
(vector "a" "b" inner) 
=> ["a" "b" ["d" "e"]] 
8

使用反引號的文字。可以像列表一樣使用。

(setq inner ["d" "e"]) 
`["a" "b" ,inner] 
=> ["a" "b" ["d" "e"]] 
相關問題