Skip to content

Latest commit

 

History

History
41 lines (32 loc) · 2.07 KB

File metadata and controls

41 lines (32 loc) · 2.07 KB
lang RU
title Все вместе
answer ^4$
ok Ага, Шекспир написал 4 пьесы в 1591
error Ответ должен быть 4. Проверьте аргумент метода count_plays
load prev

Теперь предположим, что мы хотим знать имена и количество пьес, написанных Шекспиром в течение определенного года.

Ruby позволяет нам выводить значения из словаря. Метод select использует блок, который позволяет нам определить, что выбрать и вернуть найденное.

Затем мы можем использовать результаты, возвращаемые select в методе each, как и раньше, просто добавляя его после блока выбора. Это еще один пример цепочки методов, который мы видели раньше, когда делали стихотворение задом наперед.

Я подготовил метод count_plays для вас. Посмотрим, сможете ли вы посчитать количество пьес, написанных Шекспиром в 1591:

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 в самом конце всего метода. Так мы получим возвращаемое значение метода count_plays.

Есть и другой способ выстраивания цепочки. Видите одинокую строчку s = get_shakey. Вы можете добавить ["William Shakespeare"].select { |k, v| в конец get_shakey (не обязательно здесь).