reduce og each_with_object
Aggreger samlinger
reduce og each_with_object er en gratis leksjon i Ruby Academy på CoddyKit. Dette er leksjon 4 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Ruby Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Ruby Academy inneholder totalt 4 leksjoner.
Hva er reduce?
reduce (aliaset inject) kombinerer alle elementene til én enkelt verdi. Blokken mottar en akkumulator og det gjeldende elementet.
sum = [1, 2, 3, 4].reduce(0) { |acc, n| acc + n }
puts sumSlik fungerer akkumulatoren
Akkumulatoren fører med seg det løpende resultatet mellom iterasjonene. Det blokken returnerer, blir den neste akkumulatoren.
[1, 2, 3].reduce(0) do |acc, n|
puts "acc=#{acc} n=#{n}"
acc + n
endreduce uten startverdi
Uten en startverdi blir det første elementet akkumulatoren, og iterasjonen starter med det andre elementet.
puts [10, 20, 30].reduce { |acc, n| acc + n }reduce med et symbol
For enkle operatorer kan De oppgi et symbol som :+ eller :* i stedet for en blokk.
puts [1, 2, 3, 4].reduce(:+)
puts [1, 2, 3, 4].reduce(:*)Finne en maksimumsverdi
reduce kan beregne mer enn summer, for eksempel den største verdien.
nums = [3, 9, 2, 7]
max = nums.reduce { |acc, n| n > acc ? n : acc }
puts maxBygge en streng
Akkumulatoren kan være av hvilken som helst type, også en streng som De bygger opp trinn for trinn.
letters = ["r", "u", "b", "y"]
word = letters.reduce("") { |acc, c| acc + c.upcase }
puts wordHva er each_with_object?
each_with_object fungerer omtrent som reduce, men De gir metoden et muterbart objekt som returneres automatisk. Objektet endres inne i blokken.
result = [1, 2, 3].each_with_object([]) do |n, arr|
arr << n * 2
end
puts result.inspectBygge en hash
each_with_object egner seg perfekt til å bygge hasher, fordi De ikke trenger å returnere objektet hver gang.
words = ["apple", "pear"]
lengths = words.each_with_object({}) do |w, h|
h[w] = w.length
end
puts lengthsTelle forekomster
Kombiner en hash med standardverdi med each_with_object for å telle elementer.
votes = ["a", "b", "a", "a"]
tally = votes.each_with_object(Hash.new(0)) do |v, h|
h[v] += 1
end
puts tallyreduce versus each_with_object
Bruk reduce når hvert trinn returnerer en ny verdi (summer, produkter). Bruk each_with_object når De endrer én beholder (arrays, hasher).
puts [1, 2, 3].reduce(:+)
puts [1, 2, 3].each_with_object([]) { |n, a| a << n }.inspecttally-forkortelsen
For telling har Ruby en innebygd tally-metode som gjør jobben for Dem.
puts ["a", "b", "a"].tallyHurtigsjekk
Sjekk ferdighetene Deres i aggregering.
Oppsummering
De kan nå aggregere samlinger:
reduce/injectmed akkumulator, startverdi eller symboleach_with_objectfor å bygge arrays og hashertallyfor rask opptelling- velg reduce for nye verdier og each_with_object for muterbare beholdere
Neste kurs: tall og matematikk.
puts (1..5).reduce(:*)Lær deg Ruby med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 29
- Leksjoner
- 109
Ofte stilte spørsmål
Er leksjonen «reduce og each_with_object» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Ruby Academy, inkludert «reduce og each_with_object», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Ruby Academy inneholder totalt 4 leksjoner.
Hva lærer jeg i «reduce og each_with_object»?
Aggreger samlinger Du øver på Ruby Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Ruby Academy?
Ingen tidligere erfaring er nødvendig. Ruby Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.
Hvor lang tid tar leksjonen «reduce og each_with_object»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Ruby Academy-leksjonen?
Ja. Alle Ruby Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Opprette intervaller
- Enumerable-modulen
- map, select, reject
- reduce og each_with_object