각각에 대해
Scheme의 for-each 함수는 목록(또는 여러 목록)의 각 요소에 프로시저를 적용하는 데 사용됩니다. 결과와 함께 새 목록을 반환하는 map과 달리 for-each은 변수 인쇄 또는 업데이트와 같은 부작용에 사용됩니다.
for-each의 가장 간단한 형태는 다음과 같습니다.
(for-each procedure list)- 프로시저: 목록의 각 요소에 적용하는 함수입니다.
- 목록: 처리할 요소가 포함된 목록입니다.
예: 목록 인쇄
(define (print-item x)
(lumi-message (number->string x)))
(for-each print-item (list 1 2 3 4))- 여기서
print-item함수는(1 2 3 4)목록의 각 요소에 적용됩니다. - 이렇게 하면 각 번호가 순차적으로 인쇄됩니다.
출력: 1 2 3 4
작동 방식
각 요소에 대해 반복:
- 제공된 절차는 목록의 모든 요소에 대해 순서대로 실행됩니다.
부작용을 수행:
- 일반적인 부작용에는 인쇄, 로깅 또는 외부 변수 수정이 포함됩니다.
map과 달리for-each은 새 목록을 반환하지 않습니다.
- 일반적인 부작용에는 인쇄, 로깅 또는 외부 변수 수정이 포함됩니다.
예: 여러 목록과 함께 사용
여러 목록이 제공되는 경우 for-each은 각 목록의 해당 요소를 처리합니다.
(define (sum-and-print x y)
(lumi-message (number->string (+ x y))))
(for-each sum-and-print (list 1 2 3) (list 4 5 6))sum-and-print함수는 두 목록의 해당 요소를 합산하고 결과를 인쇄합니다.
출력: 5 7 9
요약
for-each함수는 목록의 각 요소에 부작용을 수행하는 데 유용합니다.map과 달리for-each은 새 목록을 생성하지 않으며 시술의 부작용에만 초점을 맞춥니다.- 여러 목록을 동시에 처리할 수 있으며 해당 요소에 절차를 적용할 수 있습니다.
for-each을 사용하면 데이터 변환이 아닌 작업 수행이 목표인 경우 목록을 효과적으로 처리할 수 있습니다.