Вы можете полностью есть набор чисел в OCL (а также коллекцию струнных и всех OCL «примитивные типы»), они называются коллекции литералов (стр.25 на OCL спецификации). Вы можете построить их с нуля, используя {}
, например. Sequence{3,2,4,1}
.
Кроме того, считает это c.ownedAttribute.name
(где c
это класс), вы будете строить набор строки (это выражения использовать неявный итератор .
)
Если вы хотите, чтобы отсортировать коллекцию буквальных, вы можете сделать collection->sortedBy(a|a)
как предложено.
Sequence{3,2,4,1}->sortedBy(a|a)
результат Sequence{1,2,3,4} : Seqence(Integer)
Bag{8,7,8,9}->sortedBy(i|i)
результат Sequence{7,8,8,9} : Sequence(Integer)
Вы можете найти больше примеров в этой статье "Object Constraint Language (OCL): Полное руководство" от Jordi Кабот и Мартин Gogolla, вы можете найти бумага здесь: http://www.db.informatik.uni-bremen.de/publications/Cabot_2012_SFM.pdf
В зависимости от того, как указаны ваши номера (т. е. какой тип/класс у них есть). –
Предположим, что это набор целых чисел или реалов. – user5005689
Они просто чистые числа, а не объект какого-то класса. В этом проблема, у меня нет атрибута для ссылки в sortedBy. Но я не думаю, что не могу сортировать набор целых чисел в OCL. – user5005689