for-each
Funktionen for-each i Scheme tillämpar en procedur på varje element i en lista (eller flera listor). Till skillnad från map, som returnerar en ny lista med resultat, används for-each för bieffekter — till exempel utskrift eller uppdatering av variabler.
Den enklaste formen av for-each ser ut så här:
(for-each procedure list)- Procedur: funktionen som tillämpas på varje element i listan.
- Lista: listan vars element ska bearbetas.
Exempel: skriv ut en lista
(define (print-item x)
(lumi-message (number->string x)))
(for-each print-item (list 1 2 3 4))- Här tillämpas funktionen
print-itempå varje element i listan(1 2 3 4). - Det gör att varje tal skrivs ut i ordning.
Utdata: 1 2 3 4
Så fungerar det
Itererar över varje element:
- Den angivna proceduren körs för varje element i listan, i ordning.
Utför bieffekter:
- Vanliga bieffekter är utskrift, loggning eller ändring av externa variabler. Till skillnad från
mapreturnerarfor-eachingen ny lista.
- Vanliga bieffekter är utskrift, loggning eller ändring av externa variabler. Till skillnad från
Exempel: flera listor
Om flera listor anges bearbetar for-each motsvarande element från varje lista.
(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))- Funktionen
sum-and-printadderar motsvarande element från de två listorna och skriver ut resultaten.
Utdata: 5 7 9
Sammanfattning
- Funktionen
for-eachär användbar när målet är bieffekter på varje element i en lista. - Till skillnad från
mapproducerarfor-eachingen ny lista — den fokuserar enbart på procedurens bieffekter. - Den kan hantera flera listor samtidigt och tillämpa proceduren på motsvarande element.
Med for-each kan du bearbeta listor effektivt när målet är att utföra handlingar snarare än att transformera data.