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_aselect 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.sortBulma 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.priceDizinlerle 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}"
endYö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 resultHepsini Birleştirme
Enumerable modülünü dahil etmek büyük bir kazanımdır:
eachyö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.sumKısa Kontrol
Enumerable modülünü dahil etmeyle ilgili anlayışınızı test edin.
Özet
Enumerable modülünü dahil etmeyi öğrendiniz:
eachyö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
eachyö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
- Özel each Yazma
- Enumerable'ı Dahil Etme
- Tembel Numaralandırıcılar
- Enumerator Nesneleri