Инструкция ACTION
Инструкция ACTION - создание нового действия.
Синтаксис
name [caption] [(param1, ..., paramN)] { actionBody } [options]
name [caption] [(param1, ..., paramN)] contextIndependentOperator [options];
Описание
Инструкция ACTION объявляет новое действие и добавляет его в текущий модуль.
Инструкция имеет две формы: первая создает действие с помощью оператора {...} — контекстно-зависимого оператора-действия, выполняющего последовательность вложенных действий, вторая — контекстно-независимого. В первой форме инструкция уже завершается закрывающей фигурной скобкой, поэтому завершающая точка с запятой не обязательна (лишняя допускается правилом пустой инструкции).
Также при объявлении действия может задаваться набор его опций.
Параметры
-
nameИмя действия. Простой идентификатор.
-
captionЗаголовок действия. Строковый литерал. Если заголовок не задан, то заголовком действия будет являться его имя.
-
param1, ..., paramNСписок параметров. Каждый из них задается типизированным параметром. Список может быть пустым. Эти параметры далее могут быть использованы в операторе-действии описывающем создаваемое действие (а также в некоторых опциях).
Если параметры не заданы явно, то они будут автоматически вычислены при обработке оператора. Порядок параметров будет соответствовать порядку появления параметров в операторе. Рекомендуется явно задавать параметры действия. Это позволит найти опечатки и другие ошибки в объявлении (например, несоответствие количества указанных параметров с количеством параметров созданного действия).
-
actionBodyТело оператора
{...}: последовательность операторов-действий и, при необходимости, объявленийLOCAL. Тело может быть пустым. Заданные в этой инструкции параметры (если они есть) можно использовать внутриactionBody. -
contextIndependentOperatorКонтекстно-независимый оператор-действие, описывающий и создающий действие.
-
options
Примеры
// действие, объявленное оператором {...}; завершающая точка с запятой не обязательна
showMessage { MESSAGE 'Hello World!'; }
// контекстно-независимый оператор ABSTRACT
loadImage 'Загрузить изображение' ABSTRACT (Item);
// явный список параметров, тело из нескольких операторов-действий и локального свойства
copy (Item from, Item to) {
LOCAL temp = STRING[100] ();
temp() <- name(from);
name(to) <- temp();
}
// абстрактное действие с возвращаемым классом
getPrice (Item i) ABSTRACT NUMERIC[10,2];
// контекстно-независимый оператор INTERNAL — встроенный Java-фрагмент
ping INTERNAL <{ System.out.println("ping"); }>;
// действие с опциями — попадает в toolbar и запрашивает подтверждение при запуске
deleteItem (Item i) { DELETE i; } TOOLBAR CONFIRM;