0Pricing
Ruby Academy · Ders

Enumerable'ı Dahil Etme

map/select özelliklerini hazır alın

Enumerable'ı Dahil Etme, CoddyKit'te ücretsiz bir Ruby Academy dersidir. Bu, 4 dersinin 2. 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.

map/select Özelliklerini Hazır Edinin

Sınıfınızda each bulunduğunda, Enumerable modülünü kullanmaya başlamak size anında map, select, reduce, sort, min, max ve daha birçok yöntemi verir; bunların tümü sizin each yönteminiz üzerine kuruludur.

class Bag
  include Enumerable
  def initialize(*x); @x = x; end
  def each; @x.each { |i| yield i }; end
end
p Bag.new(1, 2, 3).map { |n| n * 10 }

Sözleşme

Anlaşma basittir: Enumerable modülünü dahil edin ve each yöntemini tanımlayın. Enumerable, diğer her şeyi çalıştırmak için dahili olarak sizin each yönteminizi çağırır.

class Squares
  include Enumerable
  def initialize(n); @n = n; end
  def each
    (1..@n).each { |i| yield i * i }
  end
end
p Squares.new(5).to_a

select ile Filtreleme

select, blok doğru değer ürettiğinde öğeleri tutar. reject ise bunun tersini yapar.

class Nums
  include Enumerable
  def initialize(*x); @x = x; end
  def each; @x.each { |i| yield i }; end
end
n = Nums.new(1, 2, 3, 4, 5, 6)
p n.select(&:even?)
p n.reject(&:even?)

reduce ile Toplama

reduce, koleksiyonu tek bir değere indirger.

class Cart
  include Enumerable
  def initialize(*p); @p = p; end
  def each; @p.each { |i| yield i }; end
end
puts Cart.new(5, 10, 15).reduce(:+)

En Küçük, En Büyük, Sıralama

Karşılaştırmaya dayalı yöntemler, öğeleriniz karşılaştırılabilir olduğu sürece çalışır.

class Scores
  include Enumerable
  def initialize(*n); @n = n; end
  def each; @n.each { |i| yield i }; end
end
s = Scores.new(7, 2, 9, 4)
puts s.min
puts s.max
p s.sort

Bulma ve Üyelik Denetimi

find, eşleşen ilk öğeyi döndürür; include? ise üyeliği denetler.

class Words
  include Enumerable
  def initialize(*w); @w = w; end
  def each; @w.each { |x| yield x }; end
end
w = Words.new("cat", "dog", "bird")
puts w.find { |x| x.length == 4 }
puts w.include?("dog")

group_by ve partition

Enumerable, güçlü gruplama yardımcıları sunar.

class Nums
  include Enumerable
  def initialize(*x); @x = x; end
  def each; @x.each { |i| yield i }; end
end
n = Nums.new(1, 2, 3, 4, 5)
p n.group_by(&:even?)
p n.partition(&:odd?)

Sıralama için Comparable Öğeleri Gerekir

Öğeleriniz özel nesnelerse, sort, min ve max yöntemlerinin onları nasıl sıralayacağını bilmesi için onlara <=> tanımlayın (Comparable aracılığıyla).

Item = Struct.new(:price) do
  include Comparable
  def <=>(o); price <=> o.price; end
end
class Shelf
  include Enumerable
  def initialize(*i); @i = i; end
  def each; @i.each { |x| yield x }; end
end
shelf = Shelf.new(Item.new(30), Item.new(10), Item.new(20))
p shelf.min.price

Dizinlerle Birlikte Yineleme

Enumerable ayrıca daha zengin yineleme için each_with_index ve each_with_object yöntemlerini de sağlar.

class Letters
  include Enumerable
  def initialize(*l); @l = l; end
  def each; @l.each { |x| yield x }; end
end
Letters.new("a", "b", "c").each_with_index do |letter, i|
  puts "#{i}: #{letter}"
end

Yöntemleri Zincirleme

Bu yöntemler diziler veya numaralandırıcılar döndürdüğü için onları anlamlı işlem zincirleri hâlinde birbirine bağlayabilirsiniz.

class Nums
  include Enumerable
  def initialize(*x); @x = x; end
  def each; @x.each { |i| yield i }; end
end
result = Nums.new(1, 2, 3, 4, 5, 6).select(&:even?).map { |n| n * n }
p result

Hepsini Birleştirme

Enumerable modülünü dahil etmek büyük bir kazanımdır:

  • each yöntemini bir kez tanımlayın.
  • map, select, reduce, sıralama, bulma, group_by ve onlarca yönteme daha sahip olun.
  • Sıralama yöntemleri için öğelere Comparable ekleyin.
class Range5
  include Enumerable
  def each; (1..5).each { |n| yield n }; end
end
puts Range5.new.sum

Kısa Kontrol

Enumerable modülünü dahil etmeyle ilgili anlayışınızı test edin.

Özet

Enumerable modülünü dahil etmeyi öğrendiniz:

  • each yöntemini tanımlayın, modülü dahil edin ve araçların tamamına sahip olun.
  • map/select/reduce/find/group_by yöntemlerinin tümü sizin each yönteminiz üzerinde çalışır.
  • Öğelerin sıralanması için <=> gerekir.
  • Yöntemler işlem zincirlerine dönüştürülebilir.
class Tens
  include Enumerable
  def each; [10, 20, 30].each { |n| yield n }; end
end
p Tens.new.map { |n| n + 1 }

Sıkça Sorulan Sorular

“Enumerable'ı Dahil Etme” dersi ücretsiz mi?

Evet — “Enumerable'ı Dahil Etme” 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.

“Enumerable'ı Dahil Etme” dersinde ne öğreneceğim?

map/select özelliklerini hazır alı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 2. dersidir.

“Enumerable'ı Dahil Etme” 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