Перейти к основному содержимому
Версия: 7.0

Инструкция 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;