Оператор 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);
}
}