gpt4 book ai didi

function - 如何定义可变参数函数

转载 作者:行者123 更新时间:2023-12-02 21:08:53 25 4
gpt4 key购买 nike

我正在寻找类似于 Javascript 的 arguments 数组的东西:

function parent(){
child.apply(this.arguments);
}

我知道可变参数长度的点表示法以及方案的 apply 函数。

这似乎不起作用,因为点被视为第一个参数:

(define (parent .) 
(list .))

(parent 1 3 4 6 7)
Error: bad argument count - received 5 but expected 1: #<procedure (array arg-list)>

这可行,但并不理想。我想调用该函数而不使用额外的语法来定义参数列表:

(define (parent args-list)
(apply list args-list))


(parent 1 3 4 6 7)
Error: bad argument count - received 5 but expected 1: #<procedure (array args-list)>

(parent `(1 3 4 6 7))
(1 3 4 6 7)

最佳答案

正确的语法是:

(define (parent . args-list)
<do something with args-list>)

像这样使用它:

(parent 1 2 3 4 5)

在该过程内,所有参数都将绑定(bind)到名为 args-list 的列表。在上面的代码片段中,args-list 将使用 '(1 2 3 4 5) 作为其值。这是可变参数函数如何在Scheme 中工作的示例。

为了完整起见,相同的机制也可用于匿名函数(请注意,args-list没有用括号括起来):

((lambda args-list <do something with args-list>) 1 2 3 4 5)

关于function - 如何定义可变参数函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12942127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com