我已阅读有关返回和使用多个值的值和定义值等函数的文档。我明白他们做了什么。当你想要使用这样的东西时,我不清楚。
何时构建单个值列表并使用该单个值列表会变坏/不可能?
答案 0 :(得分:6)
define-values 是一种便利,可让您直接将变量绑定到表达式的结果。它可以为您节省一些输入,因为您不必显式解压缩列表。我不认为有些情况下构建单个值列表是不好或不可能的。实际上,这比 define-values 更便携。
答案 1 :(得分:5)
Here是我关于该主题的原始帖子;它被复制在下面。
在comp.lang.scheme中的this线程中,讨论了返回多个值的方法。 R6RS中似乎有3个解决方案:
(import (rnrs))
; let-values + values
(define (foo1)
(values 1 2 3))
(let-values (((a b c) (foo1)))
(display (list a b c))
(newline))
; cps
(define (foo2 k)
(k 1 2 3))
(foo2 (lambda (a b c)
(display (list a b c))
(newline)))
; list
(define (foo3)
(list 1 2 3))
(let ((result (foo3)))
(display result)
(newline))
Per Aziz和Aaron的观点;你应该使用向读者传达最多信息的方法。