目前我正在通过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