Generics 专门处理关键字的泛型函数
在CommonLisp中是否有创建泛型函数的方法 其中要专门化的参数是关键字参数 例如,与此不同的是:Generics 专门处理关键字的泛型函数,generics,common-lisp,Generics,Common Lisp,在CommonLisp中是否有创建泛型函数的方法 其中要专门化的参数是关键字参数 例如,与此不同的是: CL-USER> (defgeneric tst (a)) #<STANDARD-GENERIC-FUNCTION TST (0)> CL-USER> (defmethod tst ((a list)) (print a)) #<STANDARD-METHOD TST (LIST) {1004ECC903}> CL-USER>(定义
CL-USER> (defgeneric tst (a))
#<STANDARD-GENERIC-FUNCTION TST (0)>
CL-USER> (defmethod tst ((a list))
(print a))
#<STANDARD-METHOD TST (LIST) {1004ECC903}>
CL-USER>(定义通用tst(a))
#
CL-USER>(定义方法tst((列表))
(打印a)
#
…它在参数“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}>
CL-USER>(定义通用tst(&键a))
#
CL-USER>(定义方法tst和键(列表))
(打印a)
#
显然,这与设置
关键字参数的默认值,所以我有点卡住了。在实际的代码中,这个问题与我选择了不同的参数布局有关,所以这不是问题(引导起来有点整洁!),但万一我再次遇到这个问题,我想我最好问问专家
干杯所有不,这不是由Common Lisp提供的。它不直接受支持,但您可以通过分派到通用函数来实现相同的效果
(defgeneric foo-impl (bar baz))
(defun foo (&key bar baz)
(foo-impl bar baz))
这是如何产生OP想要的相同效果的?因为专门化
foo impl
允许foo
像专门化一样工作。