Ruby Academy · Pelajaran

reduce dan each_with_object

Agregasikan koleksi.

Pelajaran 4 dari 413 langkah

reduce dan each_with_object adalah pelajaran Ruby Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Ruby Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Ruby Academy mencakup 4 pelajaran total.

Apa Itu reduce?

reduce (alias inject) menggabungkan semua elemen menjadi satu nilai. Blok menerima akumulator dan elemen saat ini.

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

Cara Kerja Akumulator

Akumulator membawa hasil sementara dari satu iterasi ke iterasi berikutnya. Apa pun yang dikembalikan blok akan menjadi akumulator berikutnya.

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

reduce Tanpa Nilai Awal

Tanpa nilai awal, elemen pertama menjadi akumulator dan iterasi dimulai dari elemen kedua.

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

reduce dengan Simbol

Untuk operator sederhana, berikan simbol seperti :+ atau :* sebagai pengganti blok.

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

Mencari Nilai Maksimum

reduce dapat menghitung hal-hal selain jumlah, seperti nilai terbesar.

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

Membangun Teks

Akumulator dapat bertipe apa pun, termasuk teks yang Anda bangun sedikit demi sedikit.

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

Apa Itu each_with_object?

each_with_object mirip dengan reduce, tetapi Anda memberinya objek yang dapat diubah dan objek tersebut dikembalikan secara otomatis. Anda mengubah objek itu di dalam blok.

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

Membangun Hash

each_with_object sangat cocok untuk membangun hash karena Anda tidak perlu mengembalikan objek tersebut setiap kali.

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

Menghitung Kemunculan

Gabungkan hash bawaan dengan each_with_object untuk menghitung jumlah kemunculan item.

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

reduce dibandingkan dengan each_with_object

Gunakan reduce ketika setiap langkah mengembalikan nilai baru, seperti jumlah atau hasil kali. Gunakan each_with_object ketika Anda mengubah satu wadah, seperti larik atau hash.

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

Pintasan Penghitungan

Untuk menghitung jumlah kemunculan, Ruby memiliki metode bawaan tally yang mengerjakannya untuk Anda.

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

Pemeriksaan Singkat

Periksa keterampilan agregasi Anda.

Rangkuman

Sekarang Anda dapat melakukan agregasi pada koleksi:

  • reduce/inject dengan akumulator, nilai awal, atau simbol
  • each_with_object untuk membangun larik dan hash
  • tally untuk penghitungan cepat
  • pilih reduce untuk nilai baru dan each_with_object untuk wadah yang dapat diubah

Kursus berikutnya: bilangan dan matematika.

puts (1..5).reduce(:*)
Gratis untuk memulai

Belajar Ruby dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
29
Pelajaran
109

Pertanyaan yang Sering Diajukan

Apakah pelajaran “reduce dan each_with_object” gratis?

Ya — teks lengkap “reduce dan each_with_object” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Ruby Academy, upgrade ke CoddyKit PRO. Kursus Ruby Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “reduce dan each_with_object”?

Agregasikan koleksi. Kamu berlatih Ruby Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Ruby Academy?

Tidak diperlukan pengalaman sebelumnya. Ruby Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “reduce dan each_with_object” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Ruby Academy ini?

Ya. Setiap pelajaran Ruby Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Membuat Rentang
  2. Modul Enumerable
  3. map, select, reject
  4. reduce dan each_with_object
← Kembali ke Ruby Academy