Skip to content

Latest commit

 

History

History
40 lines (31 loc) · 1.44 KB

File metadata and controls

40 lines (31 loc) · 1.44 KB
lang TR
title Şimdi Hep Beraber
answer ^4$
ok Evet, Shakespeare 1591'de 4 oyun yazdı
error Cevap, 1591 yılı için 4 olmalı
load prev

Şimdi, düşünelim ki biz sadece belirli bir yılda Shakespeare tarafından yazılan oyunların isim ve sayılarını bulmak istiyoruz.

Ruby, bizim değerleri bir hash'ten select aracılığıyla seçmemize izin veriyor. select metodu bizim neyin seçileceğini belirmememiz için bir block kullanıyor.

select metodunun daha önce döndürdüğü sonuçları each metodu içerisinde select block'u sonrasında ekleyerek kullanabiliriz. Bu daha önce şiiri terster çevirirken gördüğümüz metod zincirlemesine başka bir örnektir.

Senin için count_plays metodunu hazırladım. Shakespeare'in 1591 yılında ne kadar oyun yazdığına bir bak bakalım. Şunu dene:

def count_plays(year)
  s = get_shakey
  
  s["William Shakespeare"]
    .select { |k, v|
      v["finished"] == year
    }.each { |key, val|
      puts val["title"]
    }.count
end

puts count_plays(1591)

count metodunu en sona zincirlediğimi fark ettin mi? Bu bize count_plays metodu için geri döndürülecek bir değer veriyor.

Burada zincirleme için başka bir olasılık daha var. O yalnız s = get_shakey satırını görüyor musun? get_shakey'den sonra ["William Shakespeare"].select { |k, v|'ı ekleyebilirdin (bu örnekte ihtiyacın yok).