5

在 Racket 中,可以通过执行例如从函数返回多个值

(define (foo)
  (values 1 2 3))

然后我们可以通过做绑定它们

(define-values (one two three) (foo))

Nowone被绑定到1、和到。two2three3

我有一个返回多个值的函数,但我只对其中一些感兴趣。有没有一种方法可以提取“有趣的”返回值,而“忽略”(即不绑定)其余部分,这_是 Haskell 中的模式?

4

1 回答 1

7

您可以使用match-let-valuesor match-define-values(取决于您想要词法变量还是顶级变量):

> (match-let-values (((_ _ a _) (values 1 2 3 4)))
    a)
; => 3

> (match-define-values (_ a _ _) (values 1 2 3 4))
> a
; => 2
于 2013-06-19T20:33:41.247 回答