在Racket上编码时,我经常遇到某种情况,当我得到一些价值时,我需要以某种方式处理它然后返回它:
(let ([result (compute-some-value)])
(process-somehow result)
result)
其中process-somehow
返回“void
”。
这段样板代码看起来错了。球拍是否有一些构造来更紧凑地描述这种模式(在一行或两行中),如begin0
或aif
,或者我需要为此编写我自己的照应宏?
为了澄清一个问题,我正在寻找能够写出像
这样的内置球拍结构(init-and-process (compute-some-value)
process-somehow)
或
(init-and-process (compute-some-value)
(process-somehow it))
答案 0 :(得分:1)
没有内置的程序,但很容易定义自己的可重用程序:
(define (init-and-process compute process)
(let ([result (compute)])
(process result)
result))
像这样使用:
(init-and-process compute-some-value process-somehow)
; => returns (compute-some-value)