0Pricing
Ruby Academy · Lektion

reduce und each_with_object

Collections aggregieren

reduce und each_with_object ist eine kostenlose Ruby Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Ruby Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Ruby Academy-Kurs umfasst insgesamt 4 Lektionen.

Was ist reduce?

reduce (Alias inject) fasst alle Elemente zu einem einzigen Wert zusammen. Der Block erhält einen Akkumulator und das aktuelle Element.

sum = [1, 2, 3, 4].reduce(0) { |acc, n| acc + n }
puts sum

So funktioniert der Akkumulator

Der Akkumulator enthält das fortlaufende Ergebnis zwischen den Iterationen. Was auch immer der Block zurückgibt, wird zum nächsten Akkumulator.

[1, 2, 3].reduce(0) do |acc, n|
  puts "acc=#{acc} n=#{n}"
  acc + n
end

reduce ohne Startwert

Ohne einen Anfangswert wird das erste Element zum Akkumulator, und die Iteration beginnt beim zweiten Element.

puts [10, 20, 30].reduce { |acc, n| acc + n }

reduce mit einem Symbol

Für einfache Operatoren übergeben Sie anstelle eines Blocks ein Symbol wie :+ oder :*.

puts [1, 2, 3, 4].reduce(:+)
puts [1, 2, 3, 4].reduce(:*)

Ein Maximum ermitteln

reduce kann mehr als Summen berechnen, zum Beispiel den größten Wert.

nums = [3, 9, 2, 7]
max = nums.reduce { |acc, n| n > acc ? n : acc }
puts max

Einen String erstellen

Der Akkumulator kann jeden Typ haben, auch einen String, den Sie schrittweise aufbauen.

letters = ["r", "u", "b", "y"]
word = letters.reduce("") { |acc, c| acc + c.upcase }
puts word

Was ist each_with_object?

each_with_object ähnelt reduce, aber Sie übergeben ein veränderbares Objekt, das automatisch zurückgegeben wird. Sie ändern das Objekt innerhalb des Blocks.

result = [1, 2, 3].each_with_object([]) do |n, arr|
  arr << n * 2
end
puts result.inspect

Einen Hash erstellen

each_with_object eignet sich hervorragend zum Erstellen von Hashes, da Sie das Objekt nicht bei jedem Durchlauf zurückgeben müssen.

words = ["apple", "pear"]
lengths = words.each_with_object({}) do |w, h|
  h[w] = w.length
end
puts lengths

Vorkommen zählen

Kombinieren Sie einen Hash mit Standardwert mit each_with_object, um Elemente zu zählen.

votes = ["a", "b", "a", "a"]
tally = votes.each_with_object(Hash.new(0)) do |v, h|
  h[v] += 1
end
puts tally

reduce und each_with_object im Vergleich

Verwenden Sie reduce, wenn jeder Schritt einen neuen Wert zurückgibt (Summen, Produkte). Verwenden Sie each_with_object, wenn Sie einen Container verändern (Arrays, Hashes).

puts [1, 2, 3].reduce(:+)
puts [1, 2, 3].each_with_object([]) { |n, a| a << n }.inspect

Die tally-Kurzform

Zum Zählen bietet Ruby die integrierte Methode tally, die diese Arbeit für Sie erledigt.

puts ["a", "b", "a"].tally

Kurzer Test

Prüfen Sie Ihre Kenntnisse zur Aggregation.

Zusammenfassung

Sie können jetzt Sammlungen aggregieren:

  • reduce/inject mit Akkumulator, Startwert oder Symbol
  • each_with_object zum Erstellen von Arrays und Hashes
  • tally zum schnellen Zählen
  • reduce für neue Werte und each_with_object für veränderbare Container auswählen

Als Nächstes: Zahlen und Mathematik.

puts (1..5).reduce(:*)

Häufig gestellte Fragen

Ist die Lektion „reduce und each_with_object“ kostenlos?

Ja — der vollständige Text von „reduce und each_with_object“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Ruby Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Ruby Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „reduce und each_with_object“?

Collections aggregieren Du übst Ruby Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Ruby Academy zu starten?

Keine Vorkenntnisse erforderlich. Ruby Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „reduce und each_with_object“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Ruby Academy-Lektion Code schreiben und ausführen?

Ja. Jede Ruby Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Bereiche erstellen
  2. Das Enumerable-Modul
  3. map, select, reject
  4. reduce und each_with_object
← Zurück zu Ruby Academy