common-lisp
기본 루프
수색…
통사론
- (end-test-form result-form *) 선언 * {tag | statement} *) (do ({var |
- (do * ({var | (var [init-form [step-form]))}) *) (end-test-form 결과 양식 *) 선언 * {tag | statement} *)
- (dolist (var list-form [result-form]) 선언 * {tag | statement} *)
- (dotimes (var count-form [result-form]) 선언 * {tag | statement} *)
점
dotimes
는 일부 매개 변수 값 아래의 0에서 단일 변수에 대한 정수 반복을위한 매크로입니다. simples 예제 중 하나는 다음과 같습니다.
CL-USER> (dotimes (i 5)
(print i))
0
1
2
3
4
NIL
NIL
은 우리가 스스로 제공하지 않았기 때문에 반환 된 값이다. 변수는 0부터 시작하여 루프 전체에 걸쳐 0에서 N-1까지의 값이됩니다. 루프가 끝나면 변수는 N :
CL-USER> (dotimes (i 5 i))
5
CL-USER> (defun 0-to-n (n)
(let ((list ()))
(dotimes (i n (nreverse list))
(push i list))))
0-TO-N
CL-USER> (0-to-n 5)
(0 1 2 3 4)
돌이스트
dolist
는 목록을 통해 쉽게 순환하기 위해 만든 루핑 매크로입니다. 가장 간단한 용도 중 하나는 다음과 같습니다.
CL-USER> (dolist (item '(a b c d))
(print item))
A
B
C
D
NIL ; returned value is NIL
반환 값을 제공하지 않았으므로 NIL
이 반환됩니다 (A, B, C, D는 *standard-output*
인쇄됩니다).
dolist
는 값을 반환 할 수도 있습니다.
;;This may not be the most readable summing function.
(defun sum-list (list)
(let ((sum 0))
(dolist (var list sum)
(incf sum var))))
CL-USER> (sum-list (list 2 3 4))
9
단순한 루프
루프 매크로에는 "단순"양식과 "확장 된"양식의 두 가지 양식이 있습니다. 확장 형식은 다른 문서 항목에서 다루지 만 단순 루프는 매우 기본적인 루프에 유용합니다.
간단한 루프 형식은 여러 양식을 취하고 루프가 return 또는 다른 종료 (예 : throw )를 사용하여 종료 될 때까지 반복합니다.
(let ((x 0))
(loop
(print x)
(incf x)
(unless (< x 5)
(return))))
0
1
2
3
4
NIL
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow