Select ve Reject
Coddy'nin Ruby Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 21 / 56.
select yöntemi, bloğun doğruluk değeri (truthy) döndürdüğü öğeleri içeren yeni bir dizi döndürür. Ruby'de "filter" bu şekilde ifade edilir.
numbers = [1, 2, 3, 4, 5, 6]
evens = numbers.select { |n| n.even? }
puts evens.inspect # [2, 4, 6]reject bunun tam tersidir; bloğun false döndürdüğü her şeyi tutar:
odds = numbers.reject { |n| n.even? }
puts odds.inspect # [1, 3, 5]Her ikisi de yeni bir dizi döndürür; orijinali değişmez.
Blok sadece bir yüklemdir; true veya false olarak değerlendirilen her şey çalışır:
words = ["hi", "hello", "hey", "yo"]
long = words.select { |w| w.length >= 3 }
puts long.inspect # ["hello", "hey"]Görev
BaşlangıçVirgülle ayrılmış tam sayılardan oluşan bir liste okuyun. İki satır yazdırın:
10'dan büyük olan sayılar (selectkullanın),,ile birleştirilmiş3ile tam bölünemeyen (not divisible) sayılar (rejectkullanın),,ile birleştirilmiş
3,7,12,15,20 girdisi için çıktı şöyledir:
12, 15, 20
7, 20Kopya kağıdı
select, bloğun doğru (truthy) olduğu öğeleri içeren yeni bir dizi döndürür ("filter" gibi):
evens = [1,2,3,4].select { |n| n.even? } # [2, 4]reject bunun tam tersidir; bloğun yanlış (falsy) olduğu öğeleri tutar:
odds = [1,2,3,4].reject { |n| n.even? } # [1, 3]Her ikisi de yeni bir dizi döndürür; orijinal diziye dokunulmaz.
Kendin dene
numbers = gets.chomp.split(",").map(&:to_i)
# TODO: satır 1, sayılar > 10, ", " ile birleştirilmiş
# TODO: satır 2, 3 ile bölünemeyen sayılar, ", " ile birleştirilmiş
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
1Derinlemesine Stringler
String Metotlarına Genel BakışString InterpolationStringler Üzerinde GezinmeSplit ve JoinÖzet - String Weaver4Bloklar, Procs ve Lambdalar
Blok Nedir?do..end ve Süslü Parantezleryield Anahtar KelimesiBlok ParametreleriProcs ve LambdalarÖzet - Özel İteratör7Hashes Bölüm 2
Varsayılan Değerlerle Hash.newHash Yapıları Üzerinde Yinelemeİç İçe Hash YapılarıBirleştirme ve DönüştürmeÖzet - Frekans Sayacı10Proje - Öğrenci Kayıtları
Projeye Genel BakışÖğrenci Ekle5Enumerable Gücü
Select ve RejectMap ZincirlemeReduce / Injectcount, all?, any?, none?group_by ve partitionsort_by, min_by, max_byÖzet - Data Pipeline8İleri Seviye Karar Yapıları
Sınıflar ve Regex ile CaseÇok Değerli whenTernary OperatörüSatır İçi if / unlessÖzet - Not Sınıflandırıcı