8

考虑到我有一个程序,(plus x y)女巫正好需要两个参数。现在我还有一个列表,其中包含两个对象,例如(list 1 2). 因此,如果有任何神奇的方法可以将列表扩展为两个参数。我们有一个点概念版本,但这不是我想要的。我只想扩展列表以使 Scheme 相信我传递了两个参数而不是列表。

希望这些 Ruby 代码有所帮助:

a = [1, 2]
def plus(x,y); x+y; end

plus(*a)
# See that a is an array and the plus method requires
# exactly two arguments, so we use a star operator to
# expand the a as arguments
4

2 回答 2

14
(apply your-procedure your-list)
于 2013-06-11T02:42:32.570 回答
6

这是 Scheme 的等效代码:

(define (plus x y)
  (+ x y))

(plus 1 2)
=> 3

(define a (list 1 2))
(apply plus a)
 => 3

扩展列表并将其作为参数传递给过程的“神奇”方法是使用apply. 阅读更多关于它的解释器文档

于 2013-06-11T02:53:17.660 回答