我试图找到一些项目,然后通过矢量距离获得最接近的项目。有时FindAll
不会返回导致Aggregate
失败的元素。我可以检查一下列表中是否确实包含某些内容,但是我可以通过某种方式为Aggregate
注入null
这样的值吗?我尝试使用null,但出现此错误:
不能从用法中推断出方法'Enumerable.Aggregate(IEnumerable,TAccumulate,Func)'的类型参数。尝试显式指定类型参数。
有没有一种方法可以运行聚合,使其返回AIBrain
或null
?
public AIBrain Closest(AIAttack attack = null) {
if (others.Count == 0) return null;
return others
.FindAll(item => attack != null ? attack.IsAttackable(item) : true)
.Aggregate(null, (curr, item) => {
float currDistance = Vector3.Distance(transform.position, curr.transform.position);
float itemDistance = Vector3.Distance(transform.position, item.transform.position);
return itemDistance < currDistance ? item : curr;
});
}