我如何 return 基于列表引用元素的条件的列表

How can I return a list based on a condition on the referencing elements of the list

我想要 return 'ListOfObjects' 的元素列表,这些元素被 'SomeOtherObject' 引用,其(SomeOtherObject 的)属性满足条件。 我正在尝试这段代码:

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

'ListOfObjects' 从 'ParentObj' 中提取特定对象的列表。但是上面的代码什么也没给我。请帮我弄清楚这里出了什么问题。

这是因为,在上面的代码中,select returns 中表达式的结果是一个列表,而不是一个布尔值。要使其成为布尔值,我必须以这种方式重写代码:

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

select 中的 select 以及大小检查是造成差异的原因。

有一个扩展来查找引用特定对象的对象:org::eclipse::xtend::util::stdlib::crossref

您也可以用同样的方式指定条件。 Here 是关于交叉引用扩展的更多信息。