0
要用某些参数调用某个函数,我们可以简单地使用(funcname arg1 arg2 ...)
或(apply funcname '(arg1 arg2 ...))
。两种方式有什么区别?谢谢。圆括号和`apply`之间有什么区别?
要用某些参数调用某个函数,我们可以简单地使用(funcname arg1 arg2 ...)
或(apply funcname '(arg1 arg2 ...))
。两种方式有什么区别?谢谢。圆括号和`apply`之间有什么区别?
区别在于apply
的参数是以列表形式给出的。所以如果你已经有了一些东西的列表,你可以用(apply f my-list)
来从列表中调用f
。
谢谢。顺便说一下,如何解开一个列表,以便给定的列表可以用作圆括号内的函数的参数? – Tim
@tim通过使用'apply'来代替。这就是它存在的原因。在Ruby或Python中使用'f(* arglist)'的地方,你可以在Scheme中使用'(apply f arglist)'。 – sepp2k
谢谢。我明白。只是好奇如何解开清单? – Tim