1
我意識到可以使用#'PRINT引用PRINT函數來引用函數。如果我們有一個列表S,其中第一個元素是'打印',我們可以使用#(車S)來引用它嗎?在運行時按名稱調用函數
假設我正在查看一個列表,其中列表中的元素是原子,這些原子是某些函數的名稱。目前,我可以這樣做:
(defun aritheval (S)
(funcall
(cond
((eq '+ (car S)) #'+)
((eq '- (car S)) #'-)
((eq '* (car S)) #'*)
((eq '/ (car S)) #'/)
)
'2
'3
)
)
此功能將計算2 + 3,2-3,2 * 3或2/3取決於列表S. S中的第一個元素包含了這些函數的名稱。
如何引用函數名稱存儲在列表中的函數?假設列表S已由(setq S'(PRINT RESTORE))定義 – 2011-02-08 06:18:00