Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scheme 括号和“apply”之间有什么区别?_Scheme - Fatal编程技术网

Scheme 括号和“apply”之间有什么区别?

Scheme 括号和“apply”之间有什么区别?,scheme,Scheme,要使用一些参数调用函数,我们只需(funcname arg1 arg2…或(apply funcname'(arg1 arg2…)。这两种方式有什么区别?谢谢。不同之处在于apply的参数以列表形式给出。因此,如果您已经有某个列表,您可以使用(应用我的列表)调用f,使用列表中的参数。谢谢。顺便问一下,如何解包列表,以便将给定列表用作括号内函数的参数?@tim使用apply。这就是它存在的原因。在Ruby或Python中使用f(*arglist)时,在Scheme中使用(apply f argli

要使用一些参数调用函数,我们只需
(funcname arg1 arg2…
(apply funcname'(arg1 arg2…)
。这两种方式有什么区别?谢谢。

不同之处在于
apply
的参数以列表形式给出。因此,如果您已经有某个列表,您可以使用
(应用我的列表)
调用
f
,使用列表中的参数。

谢谢。顺便问一下,如何解包列表,以便将给定列表用作括号内函数的参数?@tim使用
apply
。这就是它存在的原因。在Ruby或Python中使用
f(*arglist)
时,在Scheme中使用
(apply f arglist)
。谢谢。我理解。只是想知道如何打开列表?你需要解释一下“打开”是什么意思。您可以使用car、cdr和同源词访问列表中的成员。大多数方案还带有一个模式匹配宏,它将(除其他外)解构列表。