2016-11-14 66 views
0

在編碼上拍我經常會遇到的情況,當我得到一些價值,那麼我需要以某種方式處理它,然後返回它:初始化,處理和球拍回

(let ([result (compute-some-value)]) 
    (process-somehow result) 
    result) 

其中process-somehow回報「void」 。

這段樣板代碼看起來錯了。球拍是否有一些結構來描述這種圖案更加緊湊(一兩行),如begin0aif或者我需要編寫自己的照應宏?

要澄清一個問題,我在尋找內置球拍建設要能寫類似

(init-and-process (compute-some-value) 
        process-somehow) 

(init-and-process (compute-some-value) 
        (process-somehow it)) 

回答

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) 
+0

謝謝,我只是想承認,沒有這樣的內置程序! – dvvrd