| lang | MK |
|---|---|
| title | Сите заедно сега |
| answer | ^4$ |
| ok | Да, Шекспир напишал 4 претстави во 1591 |
| error | Одговорот за годината 1591 треба да биде 4 |
| load | prev |
Сега претпостави дека сакаме да ги знаеме имињата и бројот на претстави напишани од Шекспир само за одредена година.
Ruby ни дозволува да селектираме вредности од hash. Методот 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 методот на крајот на секој each метод. Ова ни ја враќа вредноста од count_plays_ методот.
Тука, има и друга можност за поврзување на методи. Ја гледаш таа осамена линија код s = get_shakey. Можеш да додадеш ["William Shakespeare"].select { |k, v| на крајот од get_shakey (не е потребно за овој случај).