我正在学习 Scheme,具有 C/C++ 背景。我非常习惯于将相关的值组合到结构中,而且我发现 Scheme 的记录在这方面工作得很好。
如果发现自己经常这样做以避免函数体中的视觉噪音:
(define (f pt z)
(let*
((x (point-x pt))
(y (point-y pt))
(d (* x y z)))
...)
其中 pt
是一个 point
记录。有没有更短的方法来绑定(bind)/解构记录的字段?理想情况下,这将在 let
绑定(bind)中工作,但我想不出一种方法来编写可以完成此操作的宏,或者如果这可能的话。
最佳答案
在Racket中,我们可以使用match
破坏记录的字段。这是否是一种更好的方法是值得商榷的...
(define (f pt z)
(match pt
[(point x y)
(let ([d (* x y z)])
...)]))
关于scheme - Scheme 中的解构记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53682857/