if
또는 cond
과 같은 구조를 사용하여 없이 "early return"을없이 어떻게 사용할 수 있는지 알아 내려고합니다.제도가 일찍 "단락 회로 복귀"?
(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)
예를 들어, 위의 코드에서, 내가 무슨 일하는 것은, 그렇지 않으면 그러나 0으로 돌아가 when
조건이 충족되는 경우 test
을 반환 win
를 원하는 것입니다 항상 반환 0에 관계없이의 절차 when
상태의 결과입니다.
이유는이 절차에서 많은 복잡한 검사 (예 : let*
과 유사한 여러 블록)를 수행하고 큰 것을 모두 넣어야하기 때문입니다. cond
은 매우 다루기 힘듭니다.
당신은 큰 COND을 만들어 잘 선택한 이름으로 별도의 기능의 각 수 있도록 블록을 넣으면 네,하지만, 당신이 더 많은 읽을 수있는 코드와 바람 것입니다. –