1
如何获取提供给Lisp函数的参数数目,如bash中变量$ 0所示? (我看到一个类似的问题,但它没有给出答案。)如何获取提供给lisp函数的参数个数
如何获取提供给Lisp函数的参数数目,如bash中变量$ 0所示? (我看到一个类似的问题,但它没有给出答案。)如何获取提供给lisp函数的参数个数
这并不清楚你在问什么,但在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)
如果检查拉姆达列表,你可以决定一个函数可以有多少论据走。
你知道如何定义一个可变参数的函数吗?最简单的函数定义不会,所以毫无疑问传递了多少个参数。如果您学习如何定义可变参数函数,将很容易找出如何确定传递了多少个参数。 – Mars 2013-04-05 05:17:04