Map Zincirleme
Coddy'nin Ruby Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 22 / 56.
Temel bilgiler bölümünde map ile tanıştın; her öğeyi dönüştürerek yeni bir dizi oluşturur. Gerçek gücü, onu select, reject ve benzerleriyle zincirlediğinde ortaya çıkar.
Her yöntem bir dizi döndürür, bu nedenle sonuç üzerinde başka bir yöntem çağırmak zinciri sürdürür:
numbers = [1, 2, 3, 4, 5]
result = numbers
.select { |n| n.odd? }
.map { |n| n * 10 }
puts result.inspect # [10, 30, 50]Zinciri yukarıdan aşağıya okuyun: sayılarla başlayın, tek olanları koruyun, her birini 10 ile çarpın. Geçici değişken yok, döngü yok.
&:method_name kısayolu, blok yalnızca bir yöntemi çağırdığında çalışır:
["hi", "yo"].map { |s| s.upcase } # ["HI", "YO"]
["hi", "yo"].map(&:upcase) # ["HI", "YO"] (aynı)Bu kısaltma Ruby kodlarında her yerde karşına çıkar. Gördüğünde onu tanı.
Görev
KolayVirgülle ayrılmış bir kelime listesi okuyun. 3 karakterden uzun olan kelimeleri büyük harflerle, , ile birleştirerek tek bir satırda yazdırın.
Bunu tek bir zincir olarak oluşturun: uzun olanları select ile seçin, &:upcase ile map uygulayın, ardından join kullanın.
hi,hello,yo,coddy,sup girdisi için çıktı şöyledir:
HELLO, CODDYKendin dene
words = gets.chomp.split(",")
# TODO: select + map(&:upcase) + join zincirleyin
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
1Dizeler Detaylı İnceleme
Dize Metotlarına Genel BakışDize EnterpolasyonuDizeler Üzerinde YinelemeBölme ve BirleştirmeTekrar - Dize Dokuyucu4Bloklar, Proc'lar ve Lambda'lar
Blok Nedir?do..end ve Süslü Parantezleryield Anahtar SözcüğüBlok ParametreleriProc'lar ve Lambda'larÖzet - Özel Yineleyici7Hash'ler 2. Bölüm
Varsayılanlarla Hash.newHash'ler Üzerinde Yinelemeİç İçe Hash'lerBirleştirme ve DönüştürmeTekrar - Frekans Sayacı10Proje - Öğrenci Kayıtları
Projeye Genel BakışÖğrenci Ekle5Enumerable Gücü
Seçme ve ReddetmeMap ZincirlemeReduce / Injectcount, all?, any?, none?group_by ve partitionsort_by, min_by, max_byTekrar - Veri HattıKendi başına pratik yap: Online Ruby derleyicisi