我注意到几乎所有的方案函数都只能返回一个列表作为输出。计划如何返回多个值?
在下面,我想返回邻居的所有相邻节点的多个值。
(define (neighbors l w)
(if (and (= 1 l) (= 1 w))
(list (and (l (+ 1 w))) (and (+ 1 l) w)))) ; how to output 2 or more values?
在这种情况下我第一测试,如果该节点是在拐角处,如果是的话,返回的坐标,其中(L和W + 1)的2个值,(L + 1和w)基本上,如果我(1,1)返回我(1,2)和(2,1)
当节点在边缘附近只有1个邻居时,同样适用,在这种情况下,我将有3个值。
当附近没有边时,我将有4个返回值。
我试图使用cons, append, list, display, write
他们都没有似乎与额外的价值。我需要这个作为this question的子功能。我应该如何实现它,所以我可以传递返回值并递归地使用它返回所有相邻节点?
编辑:我找到了答案:使用关键字“values
”返回多个值。例如:
(define (store l w)
(values (write l)
(write w)
(newline)
(list (+ 1 w) l)
(list w (+ 1 l))))
你知道你可以发布一个答案,你自己的问题? (如果你喜欢得到堆栈溢出点:) – 2009-10-16 15:34:11
感谢指出,没有意识到我可以做到这一点 – Jonathan 2009-10-16 17:42:13