Продублирую интересную, на мой взгляд, идею. Изрядным подспорьем для "эмуляции" объектной системы было бы добавление в платформе возможности обработки несуществующих локаций. В этом случае куча запросов по реализации объектной модели отпадёт, как мне кажется, сразу.
Например, в модуле меню мне сейчас приходится называть функцию "Меню.ДобавитьПункт" и вызывать её с передачей параметра — именем "объекта", например:
Пример 1: GS 'Меню.Создать', 'МенюСундука' GS 'Меню.ДобавитьПункт', 'МенюСундука', 'Осмотреть сундук' GS 'Меню.ДобавитьПункт', 'МенюСундука', 'Открыть сундук' GS 'Меню.Вызвать', 'МенюСундука'
Было бы удобнее (и нагляднее) использовать такой код:
Пример 2: GS 'СоздатьМеню', 'МенюСундука' GS 'МенюСундука.ДобавитьПункт', 'Осмотреть сундук' GS 'МенюСундука.ДобавитьПункт', 'Открыть сундук' GS 'МенюСундука.Вызвать'
А в обработчике уже парсить имя несуществующей локации и на основе результатов что-то делать дальше.
Например, разработчик модуля ведёт список объектов, созданных данным модулем. В обработчике из имени несуществующей локации он вычленяет потенциальное имя объекта, ищет его в своём списке и (если находит) обрабатывает его должным образом, вызывая правильную функцию (т.е. всё тот же код, который приведён в примере 1).
Тут, конечно, возникают другие вопросы, например:
Поскольку каждый подобный модуль будет добавлять свой обработчик, то как прервать обработку получившейся цепочки после того, как "объект" опознан и обработан? Возвращать что-нибудь в Result? Например 0 — продолжать, не ноль — обработка завершена. И если в конце обработки платформа в Result имеет 0, то выводить "Локация не существует"…
Неактивен
Есть же функция проверки существования локации (LOC), можно проверять наличие локации с ее помощью.
Неактивен
HzD_Byte написал:
Есть же функция проверки существования локации (LOC), можно проверять наличие локации с ее помощью.
Функция LOC тут вообще не при делах. Тут вызывается заведомо несуществующая функция, вызов которой переадресовывается на существующую функцию с дополнительным параметром, значение которого вырезается из исходного имени.
Неактивен
да уж, было бы полезно.
Неактивен