reduce dan each_with_object
Agregasikan koleksi.
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 sumCara 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
endreduce 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 maxMembangun 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 wordApa 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.inspectMembangun 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 lengthsMenghitung 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 tallyreduce 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 }.inspectPintasan Penghitungan
Untuk menghitung jumlah kemunculan, Ruby memiliki metode bawaan tally yang mengerjakannya untuk Anda.
puts ["a", "b", "a"].tallyPemeriksaan Singkat
Periksa keterampilan agregasi Anda.
Rangkuman
Sekarang Anda dapat melakukan agregasi pada koleksi:
reduce/injectdengan akumulator, nilai awal, atau simboleach_with_objectuntuk membangun larik dan hashtallyuntuk 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(:*)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
- Membuat Rentang
- Modul Enumerable
- map, select, reject
- reduce dan each_with_object