我試圖找出如何在方案程序沒有使用頂級if
或cond
類似的構造做「早期返回」。方案提前「短路迴歸」?
(define (win b)
(let* ((test (first (first b)))
(result (every (lambda (i) (= (list-ref (list-ref b i) i) test))
(enumerate (length b)))))
(when (and (not (= test 0)) result) test))
0)
例如,在上面的代碼,我想win
返回test
如果when
條件得到滿足,否則返回0。但是,什麼情況是,該過程將總是返回0,無論when
條件的結果。
我構建我的代碼,這種方式是因爲在此過程中,我需要做的(類似於例如let*
多個塊)衆多複雜的檢查,並把一切都在一個大cond
會很笨重的原因。
是的,但如果你犯了一個很大的COND,把讓每塊在一個單獨的 功能與精心挑選的名字,你會風與更好,更可讀的代碼。 – 2010-03-15 04:21:23