för varje
for-each-funktionen i Schema används för att tillämpa en procedur på varje element i en lista (eller flera listor). Till skillnad från map, som returnerar en ny lista med resultaten, används for-each för dess bieffekter, som att skriva ut eller uppdatera variabler.
Den enklaste formen av for-each ser ut så här:
(for-each procedure list)- Procedur: En funktion som ska tillämpas på varje element i listan.
- Lista: Listan vars element kommer att 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). - Detta gör att varje nummer skrivs ut sekventiellt.
Utdata: 1 2 3 4
Hur det fungerar
Itererar över varje element:
- Den angivna proceduren exekveras för varje element i listan, i ordning.
Utför biverkningar:
- Vanliga biverkningar inkluderar utskrift, loggning eller modifiering av externa variabler. Till skillnad från
mapreturnerar intefor-eachen ny lista.
- Vanliga biverkningar inkluderar utskrift, loggning eller modifiering av externa variabler. Till skillnad från
Exempel: Användning med flera listor
Om flera listor tillhandahålls, behandlar 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-printsummerar motsvarande element från de två listorna och skriver ut resultaten.
Utdata: 5 7 9
Sammanfattning
for-each-funktionen är användbar för att utföra biverkningar på varje element i en lista.- Till skillnad från
mapproducerarfor-eachingen ny lista – den fokuserar enbart på procedurens biverkningar. - Den kan hantera flera listor samtidigt och tillämpa proceduren på motsvarande element.
Genom att använda for-each kan du effektivt bearbeta listor när målet är att utföra åtgärder snarare än att transformera data.