How can I get the number of arguments supplied to a Lisp function like in bash with the variable $0? (I saw a similar question but it does not give the answer.)
问问题
930 次
1 回答
5
目前尚不清楚您在问什么,但在 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 列表,您可以确定一个函数可以接受多少个参数。
于 2013-06-23T22:23:32.180 回答