Как я могу вернуть список на основе условия на ссылающиеся элементы списка

Я хочу вернуть список элементов ListOfObjects, на которые ссылается SomeOtherObject с его атрибутом (SomeOtherObject), удовлетворяющим условию. Я пытаюсь этот код:

ParentObj.ListOfObjects.select(e|e.referencingContainers.typeSelect(SomOtherObject).attr.isValid());

ListOfObjects извлекает список определенных объектов из ParentObj. Но приведенный выше код ничего не дает. Пожалуйста, помогите мне выяснить, что здесь не так.

2 ответа

Решение

Это потому, что в приведенном выше фрагменте кода результат выражения внутри выбора возвращает список, а не логическое значение. Чтобы сделать его логическим, я должен переписать код следующим образом:

ParentObj.ListOfObjects.select(e|e.referencingContainers.typeSelect(SomOtherObject).select(el|el.attr.isValid()).size > 0);

Выбор внутри выбора вместе с проверкой размера - вот что изменило ситуацию.

Существует расширение для поиска объектов, которые ссылаются на конкретный объект: org::eclipse::xtend::util::stdlib::crossref

Вы также можете указать условия таким же образом. Вот больше информации о Расширениях Перекрестных ссылок.

Другие вопросы по тегам