Menu
Coddy logo textTech

Reduce / Inject

Coddy'nin Ruby Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 23 / 56.

Bazen bir dizinin tamamını tek bir değere, bir toplama, bir çarpıma veya en uzun dizeye indirgemeniz gerekir. reduce (aynı zamanda inject olarak da adlandırılır: aynı metod, iki isim) bu iş için kullanılan araçtır.

Blok iki parametre alır: biriktirici (accumulator) ve geçerli öğe. Bloğun dönüş değeri bir sonraki biriktirici olur.

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

Adım adım biriktirici şöyledir: 0 → 1 → 3 → 6 → 10.

İlk argüman, biriktiricinin (accumulator) başlangıç değeridir. Eğer bunu belirtmezseniz, Ruby dizinin ilk elemanını kullanır:

[1, 2, 3, 4].reduce { |acc, n| acc * n }   # 24

Toplam ve çarpım gibi saf işlemler için Ruby size bir kısayol sunar; bir blok yerine bir sembol geçirin:

[1, 2, 3, 4].reduce(:+)   # 10
[1, 2, 3, 4].reduce(:*)   # 24

Özel bir biriktirici (accumulator) oluşturabildiğinizde, neredeyse her şeyi tek bir geçişte hesaplayabilirsiniz.

challenge icon

Görev

Kolay

Virgülle ayrılmış bir tam sayı listesi okuyun. Üç satır yazdırın:

  1. Toplam (reduce(:+) kullanın)
  2. Çarpım (reduce(:*) kullanın)
  3. reduce ve açık bir blok ile hesaplanan maksimum değer, max kullanılmamalıdır.

2,5,3,8 girdisi için çıktı şöyledir:

18
240
8

Kendin dene

numbers = gets.chomp.split(",").map(&:to_i)

# YAPILACAK: toplamı, çarpımı ve maksimumu yazdır (reduce + açık blok ile)
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık ve Akış bölümündeki tüm dersler

Kendi başına pratik yap: Online Ruby derleyicisi