Как я могу вернуть список на основе условия на ссылающиеся элементы списка
Я хочу вернуть список элементов 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
Вы также можете указать условия таким же образом. Вот больше информации о Расширениях Перекрестных ссылок.