Контест Middle ООП, трейты и интерфейсы обновлено
Диспетчер событий с приоритетами
Условие
Реализуйте диспетчер событий, как в Symfony EventDispatcher. Команды:
on event listener priority: подписать слушателя (priority целое, больше значит раньше; при равенстве раньше тот, кто подписался раньше);emit event: вызвать слушателей события по порядку. Слушатель, чьё имя начинается сstop, останавливает распространение события (сам он вызывается).
Вывод: на каждый emit строку event: слушатели через пробел в порядке вызова, или event: -.
Ввод: n (n ≤ 2·10⁴), затем команды.
Пример
5
on user.created mail 0
on user.created audit 10
on user.created stopX 5
emit user.created
emit other
user.created: audit stopX
other: -
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.