gpt4 book ai didi

lisp - 在 Common Lisp 中同时使用 &rest 和 &key

转载 作者:太空宇宙 更新时间:2023-11-03 18:42:22 26 4
gpt4 key购买 nike

我想同时使用&rest&key。但是,下面的尝试代码:

(defun test (&rest args &key (name "who")) nil)
(test 1 2 3 4 5 :name "hoge")

导致错误:

*** - TEST: keyword arguments in (1 2 3 4 5 :NAME "hoge") should occur pairwise

当我只提供关键字参数时,如 (test :name "hoge"),它起作用了。是否可以同时使用 &rest 和 &key?

最佳答案

&key的组合和 &rest实际上非常在 Common Lisp 中很常见,但几乎总是与 &allow-other-keys .

例如,假设你想为 write但不想列出显式地接受所有关键字参数:

(defun my-write (object &rest args &key stream &allow-other-keys)
(write "my wrapper" :stream stream)
(apply #'write object args))

你会发现很多地方 &rest/&key/&allow-other-keysCLOS 实际所在的任何地方都使用模式 implemented .

关于lisp - 在 Common Lisp 中同时使用 &rest 和 &key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56712241/

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