Как избежать GoTo?
Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті
Приветствую.
Возник вопрос с которым никак не могу разобраться, скорее всего в силу недостаточности опыта и профессиональной деформации.
Суть такова: на языке типа Python реализовать телефонное меню. То самое, которое Вы слышите позвонив своему мобильному оператору «нажмите 1, нажмите 2» и так далее.
Вопрос не в том, как говорить или считывать данные, можно представить себе это в виде консольного диалога с пользователем. Это самое меню (IVR) представляет собой дерево выборов, но с возможностью из любой точки переместиться в любую. Т.е. по этому самому меню в теории можно ходить бесконечно.
Если представить меню как цепочку 1 — 2 — 3 — 4 — 5 -... n, то из любой точки в теории можно попасть в любую (в зависимости от ответа пользователя), причем без особых проблем с сохранением предыдущих состояний. Разве что историю прохода хранить.
В обычных VoIP решениях (Asterisk, свой скриптовый язык) тут очень сильно применяется GoTo. И ничего плохого в этом нет.
Но не совсем понятно, как перенести это на обычные языки, где за GoTo расстреливают без права апелляции.
Прошу натолкнуть на идею, как реализовать подобное (думал через рекурсии, но пугает сама идея и возможность выстрелить себе в ногу на каждом шагу).
37 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів