0Pricing
Ruby Academy · Ders

Enumerator Nesneleri

Dış yineleme

Enumerator Nesneleri, CoddyKit'te ücretsiz bir Ruby Academy dersidir. Bu, 4 dersinin 4. 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.

Dış Yineleme

Bir numaralandırıcı, bir yinelemeyi temsil eden bir nesnedir. Dış yinelemeyi destekler: each yöntemine bir blok vermek yerine, next ile değerleri birer birer çekersiniz.

enum = [10, 20, 30].each
puts enum.next
puts enum.next

Numaralandırıcı Alma

each gibi bir yineleme yöntemini blok olmadan çağırdığınızda yöntem çalışmaz; bunun yerine bir numaralandırıcı alırsınız.

enum = [1, 2, 3].each
puts enum.class

Sonraki Değerleri Çekme

next, her çağırdığınızda bir sonraki öğeyi döndürür. Numaralandırıcı konumunu hatırlar.

letters = ["a", "b", "c"].each
puts letters.next
puts letters.next
puts letters.next

Sonda StopIteration

Değerler tükendiğinde next, StopIteration hatasını yükseltir. Temiz bir şekilde durmak için bu hatayı yakalayabilirsiniz.

enum = [1, 2].each
begin
  loop { puts enum.next }
rescue StopIteration
  puts "done"
end

Sonraki Değere Bakma ve Başa Sarma

peek ilerlemeden sonraki değere bakar; rewind ise başlangıca döner.

enum = [5, 6, 7].each
puts enum.peek
puts enum.next
enum.rewind
puts enum.next

Özel Numaralandırıcılar Oluşturma

Enumerator.new ile kendi numaralandırıcınızı oluşturun. Blok, bir değer üretici olan y değerini alır; y << veya y.yield ile değerler verin.

evens = Enumerator.new do |y|
  n = 0
  loop do
    y << n
    n += 2
  end
end
puts evens.next
puts evens.next
puts evens.next

Sonsuz Numaralandırıcılar

Değerleri çekme temelli oldukları için özel numaralandırıcılar sonsuz olabilir. Yalnızca ihtiyacınız olanları alırsınız.

counter = Enumerator.new do |y|
  i = 1
  loop { y << i; i += 1 }
end
p counter.first(5)

Numaralandırıcılar Numaralandırılabilirdir

Bir numaralandırıcı, Enumerable modülünü içerir; bu nedenle olağan yöntemlerin tümü (map, select, take) de çalışır ve dahili ile dış yinelemeyi birlikte kullanabilirsiniz.

fib = Enumerator.new do |y|
  a, b = 0, 1
  loop do
    y << a
    a, b = b, a + b
  end
end
p fib.take(8)

with_index

with_index, isteğe bağlı olarak özel bir sayıdan başlayarak herhangi bir numaralandırıcıya dizin ekler.

["x", "y", "z"].each.with_index(1) do |item, i|
  puts "#{i}: #{item}"
end

each Yönteminden Numaralandırıcı Döndürme

Kendi sınıflarınızda, blok verilmediğinde çağıranların dış yineleme yapabilmesi için to_enum(:each) (veya enum_for) döndürün.

class Trio
  def each
    return to_enum(:each) unless block_given?
    yield 1; yield 2; yield 3
  end
end
e = Trio.new.each
puts e.next
puts e.next

Hepsini Birleştirme

Numaralandırıcılar üzerinde ayrıntılı denetim sahibi olmanızı sağlar:

  • Değerleri next ile çekin, önizleyin veya geri sarın.
  • Enumerator.new ve bir değer üretici kullanarak özel numaralandırıcılar oluşturun.
  • Numaralandırılabilir oldukları için eşleme, seçme ve alma işlemlerinin tümü çalışır.
odds = Enumerator.new do |y|
  n = 1
  loop { y << n; n += 2 }
end
p odds.first(4)

Hızlı Kontrol

Enumerator nesneleri hakkındaki anlayışınızı sınayın.

Özet

Enumerator nesnelerini öğrendiniz:

  • next, peek ve rewind aracılığıyla dış yineleme.
  • StopIteration işlemin sona erdiğini bildirir.
  • Enumerator.new { |y| ... } kullanarak özel numaralandırıcılar oluşturma.
  • Numaralandırılabilir olabilir ve sonsuza kadar sürebilirler.
nums = Enumerator.new { |y| 1.upto(3) { |n| y << n } }
puts nums.next
puts nums.next

Sıkça Sorulan Sorular

“Enumerator Nesneleri” dersi ücretsiz mi?

Evet — “Enumerator Nesneleri” 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.

“Enumerator Nesneleri” dersinde ne öğreneceğim?

Dış yineleme 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 4. dersidir.

“Enumerator Nesneleri” 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