0Pricing
Ruby Academy · Ders

Özel each Yazma

Yinelemeyi uygulayın

Özel each Yazma, CoddyKit'te ücretsiz bir Ruby Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Ruby Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Ruby Academy kursu toplamda 4 dersten oluşur.

Yinelemeyi Uygulama

Ruby'de yineleme tek bir yöntem etrafında şekillenir: each. Kendi each yönteminizi yazarak bir koleksiyonda nasıl ilerlenebileceğine karar verir ve tüm yineleme ekosisteminin kilidini açarsınız.

class Trio
  def each
    yield 1
    yield 2
    yield 3
  end
end
Trio.new.each { |n| puts n }

each Değerleri Verir

each içinde her öğe için bir kez yield çağırın. Çağıranın sağladığı blok, her değeri sırayla alır.

class Days
  NAMES = ["Mon", "Tue", "Wed"]
  def each
    NAMES.each { |d| yield d }
  end
end
Days.new.each { |day| puts day }

Dahili Verileri Saklama

Genellikle each, bir örnek değişkeninde tutulan veriler üzerinde ilerler.

class Stack
  def initialize
    @items = []
  end
  def push(x); @items << x; self; end
  def each
    @items.each { |i| yield i }
  end
end
s = Stack.new
s.push(10).push(20)
s.each { |x| puts x }

Özel İlerleme Sırası

each yönteminizi istediğiniz sırada yineleme yapacak şekilde yazabilirsiniz; örneğin ters sırada.

class Reversed
  def initialize(arr); @arr = arr; end
  def each
    i = @arr.length - 1
    while i >= 0
      yield @arr[i]
      i -= 1
    end
  end
end
Reversed.new([1, 2, 3]).each { |x| puts x }

Birden Çok Değer Verme

yield birden fazla değer aktarabilir; blok da bunları bir özetin anahtarı ve değeri gibi birden fazla parametre olarak alır.

class Pairs
  def each
    yield :a, 1
    yield :b, 2
  end
end
Pairs.new.each { |key, value| puts "#{key}=#{value}" }

each Kendini Döndürür

Geleneksel olarak each, çağrıların zincirlenebilmesi için koleksiyonun kendisini döndürür. each içinden self döndürmek, yerleşik davranışla uyumludur.

class Box
  def initialize(*x); @x = x; end
  def each
    @x.each { |i| yield i }
    self
  end
end
result = Box.new(1, 2).each { |i| }
puts result.class

Blok Verilip Verilmediğini Denetleme

Blok eksikliğine karşı önlem alın; böylece yalın bir each çökmez. Bunun için genellikle daha sonra ele alınacak bir numaralandırıcı döndürülür.

class List
  def initialize(*x); @x = x; end
  def each
    return @x.to_enum unless block_given?
    @x.each { |i| yield i }
  end
end
puts List.new(5, 6).each.class

Diğer Yöntemleri Çalıştırma

each kullanılabilir olduğunda, aynı sınıf içinde başka yöntemleri onun üzerine kurabilirsiniz.

class Numbers
  def initialize(*n); @n = n; end
  def each; @n.each { |i| yield i }; end
  def total
    sum = 0
    each { |i| sum += i }
    sum
  end
end
puts Numbers.new(1, 2, 3, 4).total

Hesaplanan Diziler

each herhangi bir şey saklamak zorunda değildir; değerleri gerektiği anda üretebilir.

class Evens
  def initialize(limit); @limit = limit; end
  def each
    n = 0
    while n <= @limit
      yield n
      n += 2
    end
  end
end
Evens.new(8).each { |x| puts x }

Numaralandırılabilir Yapının Temeli

Kendi each yönteminiz, Enumerable modülünün ihtiyaç duyduğu tek yapı taşıdır. Sonraki derste bu modülü sınıfınıza dahil edecek ve onlarca yönteme ücretsiz olarak sahip olacaksınız.

class Range3
  def each
    (1..3).each { |n| yield n }
  end
end
Range3.new.each { |n| print n }
puts

Hepsini Birleştirme

Özel bir each yineleme üzerinde tam denetim sağlar:

  • Her öğe için bir kez yield çağırın.
  • Herhangi bir sırada ilerleyin, değerler üretin veya çiftler verin.
  • Geleneksel olarak self döndürün.
class Countdown
  def initialize(from); @from = from; end
  def each
    @from.downto(1) { |n| yield n }
  end
end
Countdown.new(3).each { |n| puts n }

Kısa Kontrol

Özel each ile ilgili anlayışınızı test edin.

Özet

Özel bir each yazmayı öğrendiniz:

  • yield, öğeleri çağıranın bloğuna aktarır.
  • İlerleme sırasını denetleyebilir ve değerler üretebilirsiniz.
  • Geleneksel olarak self döndürün.
  • each, Enumerable'ın temelidir.
class Squares
  def initialize(n); @n = n; end
  def each
    (1..@n).each { |i| yield i * i }
  end
end
Squares.new(4).each { |sq| puts sq }

Sıkça Sorulan Sorular

“Özel each Yazma” dersi ücretsiz mi?

Evet — “Özel each Yazma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Ruby Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Ruby Academy kursu toplamda 4 dersten oluşur.

“Özel each Yazma” dersinde ne öğreneceğim?

Yinelemeyi uygulayın Ruby Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Ruby Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Ruby Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“Özel each Yazma” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Ruby Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Ruby Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Özel each Yazma
  2. Enumerable'ı Dahil Etme
  3. Tembel Numaralandırıcılar
  4. Enumerator Nesneleri
← Ruby Academy Sayfasına Dön