gpt4 book ai didi

common-lisp - 我可以将属性列表作为 &key 参数传递给函数吗?

转载 作者:行者123 更新时间:2023-12-02 06:29:11 24 4
gpt4 key购买 nike

有没有一种方法可以像这样将属性列表作为参数传递给函数:

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

最佳答案

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

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

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

请注意,变量 call-arguments-limit 仍然适用。实现支持的函数调用中的参数数量通常是有限的。因此,应用具有一长串参数的函数可能行不通。请注意,例如在 ABCL 中,此值仅为 50(五十)。

关于common-lisp - 我可以将属性列表作为 &key 参数传递给函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44894604/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com