, 그것은 다른 프로그래밍 언어
에서 계획에오고있어하지만 당신은 또한 잘못 if
을 사용하는 것이 매우 분명입니다 - 계획에서, 당신은 단일 지점을 가질 수 없습니다if
성명.음, 단지 표현 및 if
표현은 항상 그에 (3 피연산자 (인수)
- 술어 (조건)
- 를 취할 것, 모든 계획에는 문 없다 무엇을 술어가 참일 경우 발생)
- 대체 (술어가 거짓 일 때 발생)
프로그램이 종료되었습니다. 약간의 조정 만하면됩니다. 바로 들여 쓰기로 인해 if
의 3 개의 피연산자를 쉽게 볼 수 있습니다.
(define (last mylist)
(if (null? mylist)
#f
(if (null? (cdr mylist))
(car mylist)
(last (cdr mylist)))))
마지막으로, 계획은 조건이 답변의 범위를 넘어
(define (last mylist)
(cond ((null? mylist)
#f)
((null? (cdr mylist))
(car mylist))
(else
(last (cdr mylist)))))
(last '())
;; #f
(last '(1))
;; 1
(last '(1 2))
;; 2
(last '(1 2 3))
;; 3
의 시퀀스 중첩 불필요한 코드를 방지하는 데 도움이
cond
는
(last '())
에 대한 반환 값
#f
입니다 제공 - 내가 주장이에
last
를 호출 빈 목록은 빈 목록에
car
을 호출하는 것과 동일한 효과를 가져야합니다. 그러나 나는 너에게 맡길거야.
이제 아무 것도 얻지 못했습니다 –
가장 안쪽의'if' 표현식에서'(null? (cdr mylist))'가 참이면 빈리스트 대신'(car mylist)'를 반환해야합니다.()'. – PieOhPah