Lisp Scheme能否将列表扩展为参数?
考虑到我有一个过程Lisp Scheme能否将列表扩展为参数?,lisp,scheme,Lisp,Scheme,考虑到我有一个过程(加上x y),它只需要两个参数。现在我还有一个列表,它包含两个对象,比如(列表12)。因此,如果有任何神奇的方法将列表扩展为两个参数。我们有一个点概念版本,但那不是我想要的。我只想扩展列表,让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 # ex
(加上x y)
,它只需要两个参数。现在我还有一个列表,它包含两个对象,比如(列表12)
。因此,如果有任何神奇的方法将列表扩展为两个参数。我们有一个点概念版本,但那不是我想要的。我只想扩展列表,让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
这是方案的等效代码:
(define (plus x y)
(+ x y))
(plus 1 2)
=> 3
(define a (list 1 2))
(apply plus a)
=> 3
展开列表并将其作为参数传递给过程的“神奇”方法是使用
apply
。阅读更多关于您口译员的信息。可能重复的,请记住您也可以使用apply。例如,您可以(应用地图列表列表)而不是(应用地图列表列表列表)
(define (plus x y)
(+ x y))
(plus 1 2)
=> 3
(define a (list 1 2))
(apply plus a)
=> 3