OCL 按元素属性分组

OCL group by element attribute

在 Acceleo 中,我有一个 OrderedSet 对象,其中每个对象都有一个字符串作为属性。

我想得到那些字符串的容器(例如 OrderedSet),其中每个字符串都是唯一的。

字符串是 (E)DataType 而不是 (E)Class 实例,因此它没有 (e) 容器。您可以对所有 String 类型的属性进行全模型搜索并检查它们的值 - 非常昂贵。最好重新访问 OrderedSet 构造,这样 'container' 知识就不会被丢弃,需要重新发现。

首先,我将所有字符串收集到一个集合中 ->collect(attribute)。然后我转换为有序集 ->asOrderedSet()。这将删除所有重复项。