gpt4 book ai didi

racket - 如何在 Racket 中有多个返回值?

转载 作者:行者123 更新时间:2023-12-03 23:44:03 26 4
gpt4 key购买 nike

似乎为了在 Racket 中使用多个返回值,我必须使用 define-values或使用 (call-with-values (thunk (values-expr)) list) 将它们收集到一个列表中.在后一种情况下,如果必须将它们收集到一个列表中,为什么有人会选择返回多个值而不是一个列表?此外,这两种方法都非常冗长且难以处理大多数代码。我觉得我一定误解了关于多重返回值的一些非常基本的东西。就此而言,我如何编写一个接受多个返回值的过程?

最佳答案

Racket doc给我们一个典型的例子,为什么变相:

> (let-values ([(q r) (quotient/remainder 10 3)])
(if (zero? r)
q
"3 does *not* divide 10 evenly"))
"3 does *not* divide 10 evenly"

我们直接得到两个值,并在随后的计算中分别使用它们。

更新:在 Common Lisp 中,凭借其绝对实用、深入人心、非功能性的方法(他们关心每个额外的 cons 单元分配),它更有意义,特别是因为它允许人们调用这样的方法以“正常”方式处理程序,自动忽略“额外”结果,有点像
(let ([q (quotient/remainder 10 3)])
(list q))

但在 Racket 中,这是无效的代码。所以,是的,它看起来像是一个无关紧要的功能,最好完全避免。

关于racket - 如何在 Racket 中有多个返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20556746/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com