我注意到幾乎所有的方案函數都只能返回一個列表作爲輸出。計劃如何返回多個值?
在下面,我想返回鄰居的所有相鄰節點的多個值。
(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