Common Lisp 中有没有一种方法可以创建一个泛型函数,其中要专门研究的参数是关键字参数?
例如,而不是这个:
CL-USER> (defgeneric tst (a))
#<STANDARD-GENERIC-FUNCTION TST (0)>
CL-USER> (defmethod tst ((a list))
(print a))
#<STANDARD-METHOD TST (LIST) {1004ECC903}>
..它在参数'a'上指定。我想要以下内容:
CL-USER> (defgeneric tst (&key a))
#<STANDARD-GENERIC-FUNCTION TST (0)>
CL-USER> (defmethod tst (&key (a list))
(print a))
#<STANDARD-METHOD TST (LIST) {1004ECC903}>
显然,这与设置关键字参数的默认值的语法冲突,所以我有点卡住了。在实际代码中,这个问题与我选择了不同的参数布局有关,所以这不是问题(而且启动起来有点整洁!)但如果我再次遇到这个问题,我想我最好问问专家!
祝大家欢呼