552 Глава 25. Введение в OCL
Таблица 25.14 (продолжение)
Стоит поближе рассмотреть forAll(...). Данная операция имеет две фор
мы. Первая форма – с одной переменной итератора (iteratorVariable), вто
рая – с множеством. Вторая форма является сокращенной записью не
скольких вложенных операций forAll(...).
Например, рассмотрим две вложенные операции forAll(...):
c>forAll( i | c>forAll( j | iteratorExpression ) )
Логические операции итератора Семантика
X(T)::isUnique( i : T | iteratorExpres
sion ) : Boolean
Возвращает true, если iteratorExpression имеет
уникальное значение для каждого значе
ния i, в противном случае возвращает false.
X(T)::one( i : T | iteratorExpression ) :
Boolean
Возвращает true, если iteratorExpression при
нимает значение true только для одного зна
чения i, в противном случае возвращает
false.
Операции выбора для итератора Семантика
X(T)::any( i : T | iteratorExpression ) : T Возвращает случайный элемент целевой
коллекции, для которого iteratorExpression
имеет значение true.
X(T)::collect( i : T | iteratorExpression )
: Bag(T)
Возвращает Bag, содержащий результаты
однократного выполнения iteratorExpression
для каждого элемента целевой коллекции
(нотацию краткой записи collect(...) см.
в разделе 25.9.2).
X(T)::collectNested( i : T | iteratorEx
pression ) : Bag(T)
Возвращает Bag коллекций, содержащий
результаты однократного выполнения itera
torExpression для каждого элемента целевой
коллекции.
Поддерживает вложение целевой коллек
ции в результирующую коллекцию.
X(T)::select( i : T | iteratorExpression ) :
X(T)
Возвращает коллекцию, содержащую эле
менты целевой коллекции, для которых
iteratorExpression принимает значение true.
X(T)::reject( i : T | iteratorExpression ) :
X(T)
Возвращает коллекцию, содержащую эле
менты целевой коллекции, для которых
iteratorExpression принимает значение false.
X(T)::sortedBy( i : T | iteratorExpres
sion ) : X(T)
Возвращает коллекцию, содержащую эле
менты целевой коллекции, упорядоченные
соответственно iteratorExpression.
Тип переменной итератора (iteratorVariable)
должен быть типом, в котором определен
оператор <.