如何获取提供给 Lisp 函数的参数数量,例如在 bash 中使用变量 $0? (我看到一个类似的问题,但没有给出答案。)
最佳答案
不清楚您到底在问什么,但在 Common Lisp 中,您可以使用 &rest
参数将不确定数量的参数收集到列表中。使用 length
您可以看到提供了多少。例如:
CL-USER> (defun numargs (&rest arguments)
(length arguments))
NUMARGS
CL-USER> (numargs 1 2 3)
3
CL-USER> (numargs 1 2 3 4 5)
5
CL-USER> (numargs)
0
因为问题有 sbcl标签,您可能对特定于 SBCL 的解决方案感兴趣。 sb-introspect:function-lambda-list
看起来相关:
CL-USER> (sb-introspect:function-lambda-list 'cons)
(SB-IMPL::SE1 SB-IMPL::SE2)
CL-USER> (sb-introspect:function-lambda-list 'numargs)
(&REST ARGUMENTS)
如果您检查 lambda 列表,您可以确定一个函数可以接受多少个参数。
关于lisp - 如何获取提供给 lisp 函数的参数数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15030122/