reduce en each_with_object
Collecties aggregeren
reduce en each_with_object is een gratis Ruby Academy-les op CoddyKit. Dit is les 4 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Ruby Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Ruby Academy bevat in totaal 4 lessen.
Wat is reduce?
reduce (alias inject) combineert alle elementen tot één waarde. Het blok ontvangt een accumulator en het huidige element.
sum = [1, 2, 3, 4].reduce(0) { |acc, n| acc + n }
puts sumZo werkt de accumulator
De accumulator draagt het tussenresultaat tussen iteraties over. Wat het blok teruggeeft, wordt de volgende accumulator.
[1, 2, 3].reduce(0) do |acc, n|
puts "acc=#{acc} n=#{n}"
acc + n
endreduce zonder beginwaarde
Zonder beginwaarde wordt het eerste element de accumulator en begint de iteratie bij het tweede element.
puts [10, 20, 30].reduce { |acc, n| acc + n }reduce met een symbool
Geef voor eenvoudige operatoren een symbool zoals :+ of :* door in plaats van een blok.
puts [1, 2, 3, 4].reduce(:+)
puts [1, 2, 3, 4].reduce(:*)Een maximum vinden
reduce kan meer berekenen dan alleen sommen, bijvoorbeeld de grootste waarde.
nums = [3, 9, 2, 7]
max = nums.reduce { |acc, n| n > acc ? n : acc }
puts maxEen tekenreeks opbouwen
De accumulator kan elk type hebben, ook een tekenreeks die je opbouwt.
letters = ["r", "u", "b", "y"]
word = letters.reduce("") { |acc, c| acc + c.upcase }
puts wordWat is each_with_object?
each_with_object lijkt op reduce, maar je geeft een veranderbaar object mee dat automatisch wordt teruggegeven. Je wijzigt het object in het blok.
result = [1, 2, 3].each_with_object([]) do |n, arr|
arr << n * 2
end
puts result.inspectEen hash opbouwen
each_with_object is ideaal om hashes op te bouwen, omdat je het object niet telkens hoeft terug te geven.
words = ["apple", "pear"]
lengths = words.each_with_object({}) do |w, h|
h[w] = w.length
end
puts lengthsVoorkomens tellen
Combineer een standaard-hash met each_with_object om elementen te tellen.
votes = ["a", "b", "a", "a"]
tally = votes.each_with_object(Hash.new(0)) do |v, h|
h[v] += 1
end
puts tallyreduce tegenover each_with_object
Gebruik reduce wanneer elke stap een nieuwe waarde oplevert (sommen, producten). Gebruik each_with_object wanneer je één container wijzigt (arrays, hashes).
puts [1, 2, 3].reduce(:+)
puts [1, 2, 3].each_with_object([]) { |n, a| a << n }.inspectDe snelkoppeling tally
Voor tellingen heeft Ruby een ingebouwde methode tally die het werk voor je doet.
puts ["a", "b", "a"].tallyKorte controle
Controleer je vaardigheden op het gebied van aggregatie.
Samenvatting
Je kunt nu collecties aggregeren:
reduce/injectmet een accumulator, beginwaarde of symbooleach_with_objectom arrays en hashes op te bouwentallyvoor snelle tellingen- kies reduce voor nieuwe waarden en each_with_object voor veranderbare containers
Volgende cursus: getallen en wiskunde.
puts (1..5).reduce(:*)Leer Ruby met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 29
- Lessen
- 109
Veelgestelde vragen
Is de les “reduce en each_with_object” gratis?
Ja — je kunt hier op het web alle 3 lessen van het leerpad Ruby Academy, waaronder “reduce en each_with_object”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Ruby Academy bevat in totaal 4 lessen.
Wat leer ik in “reduce en each_with_object”?
Collecties aggregeren Je oefent met Ruby Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Ruby Academy te beginnen?
Ervaring vooraf is niet nodig. Ruby Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 4 van 4.
Hoe lang duurt de les “reduce en each_with_object”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Ruby Academy?
Ja. Elke les over Ruby Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Bereiken maken
- De module Enumerable
- map, select, reject
- reduce en each_with_object