Common lisp 我可以将财产清单作为&;传递给您吗;函数的关键参数?

Common lisp 我可以将财产清单作为&;传递给您吗;函数的关键参数?,common-lisp,Common Lisp,是否有一种方法可以将属性列表作为参数传递给函数,其方式类似于: (defun sum (&key x y) (+ x y)) (sum '(:x 10 :y 20)) 要使用来自列表的参数调用函数,请使用: 这也适用于: CL-USER > (apply #'sum :x '(10 :y 20)) 30 CL-USER > (apply #'sum :x 10 '(:y 20)) 30 CL-USER > (apply #'sum :x 10 :y '(20))

是否有一种方法可以将属性列表作为参数传递给函数,其方式类似于:

(defun sum (&key x y) (+ x y))
(sum '(:x 10 :y 20))

要使用来自列表的参数调用函数,请使用:

这也适用于:

CL-USER > (apply #'sum :x '(10 :y 20))
30

CL-USER > (apply #'sum :x 10 '(:y 20))
30

CL-USER > (apply #'sum :x 10 :y '(20))
30

CL-USER > (apply #'sum :x 10 :y 20 '())
30
请注意,变量
调用参数限制仍然适用。实现支持的函数调用中的参数数量通常是有限的。因此,应用具有一长串参数的函数可能不起作用。请注意,例如在ABCL中,该值仅为50(五十)

CL-USER > (apply #'sum :x '(10 :y 20))
30

CL-USER > (apply #'sum :x 10 '(:y 20))
30

CL-USER > (apply #'sum :x 10 :y '(20))
30

CL-USER > (apply #'sum :x 10 :y 20 '())
30