| lang | UA |
|---|---|
| title | Всі разом |
| answer | ^4$ |
| ok | Так, Шекспір написав 4 п'єси' в 1591 |
| error | Відповідь для року 1591 має бути 4 |
| load | prev |
Тепер припустімо, що ми хочемо знати імена і кількість п'єс, написаних Шекспіром протягом певного року.
Ruby дозволяє нам виводити значення зі словника. Метод select використовує блок, який дозволяє нам визначити, що вибрати і повернути знайдене.
Потім ми можемо використовувати результати, які повертаються через select в методі each, як і раніше, просто додаючи його після блоку select. Це ще один приклад ланцюжка методів, який ми бачили раніше, коли розгортали віршик задом наперед.
Я підготував для тебе метод 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 (але не обов'язково тут).