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}>
显然,这与设置
关键字参数的默认值,所以我有点坚持。在实际的代码中,这个问题与我选择的参数布局不同,所以这不是问题(引导起来有点麻烦!),但是如果再次遇到这个问题,我想我最好问问专家!
欢呼全部
最佳答案
不,Common Lisp没有提供。