для каждого
Функция for-each в Scheme используется для применения процедуры к каждому элементу списка (или нескольких списков). В отличие от 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, вы можете эффективно обрабатывать списки, когда целью является выполнение действий, а не преобразование данных.