当前位置:  开发笔记 > 编程语言 > 正文

忽略Racket中的多个返回值

如何解决《忽略Racket中的多个返回值》经验,为你挑选了1个好方法。

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

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

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

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

现在one必然1,two2three3.

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



1> Chris Jester..:

您可以使用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


@jozefg嗯`define-values`基本上也是一个低级原语.如果您通过宏扩展器运行任何代码并显示_everything_选项,您将在整个地方看到`define-values`.毕竟,`define`是`define-values`的特例,其中只有一个值,所以`define`被扩展为`define-values`.编辑:从概念上讲,我认为`define-values`可以扩展为`match-define-values`,但`match`是一种更新,更高级别的语言添加.我想这个问题高于我的工资等级.:)
推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有