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

Оператор WHILE

Оператор WHILE - создание действия, реализующего рекурсивный цикл.

Синтаксис

WHILE expression [ORDER [DESC] orderExpr1, ..., orderExprN]
[NEW [alias =] className]
DO action

Описание

Оператор WHILE создает действие, реализующее рекурсивный цикл. Этот оператор может добавлять свои локальные параметры при задании условия. Эти параметры соответствуют перебираемым объектам и не являются параметрами создаваемого действия. Также в блоке NEW можно указать имя класса, объект которого будет создаваться для каждого набора объектов, удовлетворяющего условию. Этому объекту задается имя, которое будет использоваться в качестве имени локального параметра, в который будет записан созданный объект.

Порядок перебора наборов объектов в операторе WHILE может быть задан блоком ORDER.

Параметры

  • expression

    Выражение, задающее условие. В этом выражении можно обращаться как к уже объявленным параметрам, так и объявлять новые локальные параметры.

  • DESC

    Ключевое слово. Указывает на обратный порядок просмотра наборов объектов.

  • orderExpr1, ..., orderExprK

    Список выражений, определяющих порядок, в котором будут перебираться наборы объектов. Для определения порядка сначала используется значение первого выражения, затем при равенстве используется значение второго и т.д. Если список не задан, то перебор происходит в произвольном порядке.

  • alias

    Имя локального параметра, которое будет соответствовать создаваемому объекту. Простой идентификатор.

  • className

    Имя класса создаваемого объекта. Задается идентификатором класса.

  • action

    Контекстно-зависимый оператор-действие, описывающий выполняемое действие.

Примеры

iterateDates (DATE dateFrom, DATE dateTo)  {
LOCAL dateCur = DATE();

dateCur() <- dateFrom;
WHILE dateCur() <= dateTo DO {
MESSAGE 'I have a date ' + dateCur();
dateCur() <- sum(dateCur(), 1);
}
}