忽略Racket中的多个返回值

时间:2013-06-19 20:09:22

标签: functional-programming scheme racket

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

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

然后我们可以通过

绑定它们
(define-values (one two three) (foo))

现在one绑定到1two绑定到2three绑定到3

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

1 个答案:

答案 0 :(得分:6)

您可以使用match-let-valuesmatch-define-values(取决于您是否需要词汇或顶级变量):

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

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