考虑到我有一个程序(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
答案 0 :(得分:11)
(apply your-procedure your-list)
答案 1 :(得分:4)
这是Scheme的等效代码:
(define (plus x y)
(+ x y))
(plus 1 2)
=> 3
(define a (list 1 2))
(apply plus a)
=> 3
扩展列表并将其作为参数传递给过程的“神奇”方法是使用apply
。阅读更多关于翻译的documentation。