目前我正在通過Peter Seibel的「Practical Common Lisp」進行工作。LISP:關鍵字參數,提供 - p
在章節「實用:一個簡單的數據庫」(http://www.gigamonkeys.com/book/practical-a-simple-database.html)塞貝爾解釋關鍵字參數和一個供給參數的用下面的例子使用:
(defun foo (&key a (b 20) (c 30 c-p)) (list a b c c-p))
結果:
(foo :a 1 :b 2 :c 3) ==> (1 2 3 T)
(foo :c 3 :b 2 :a 1) ==> (1 2 3 T)
(foo :a 1 :c 3) ==> (1 20 3 T)
(foo) ==> (NIL 20 30 NIL)
因此,如果我在參數列表的開頭使用&鍵,則可以使用3個參數名稱的列表,缺省值和第三個參數(如果參數已提供)。好。 但是在上面的例子看代碼:
(list a b c c-p)
怎樣的Lisp解釋知道C-p是我的「提供的參數」?
Aaah明白了:-) c-p只是簡單地添加到列表中,如a,b和c,而不是「列表已設置/未設置」的「提供參數」。 雖然它很簡單,但它仍然需要一些時間才能熟悉語法。 :-) 謝謝! – echox 2010-04-29 09:25:58