不是所有的代码路径都返回一个值,但似乎它们都返回一个值



我正在尝试迭代我所做的自定义类的数组,但它告诉我并非所有代码路径都返回值。在Java中,几乎所有路径都返回一个值。

function PointLiesWithinAtleast1Polygon(point: CLLocationCoordinate2D, polygons: Array<GMSPath>){
polygons.forEach(polygon =>{
if(GMSGeometryContainsLocation(point, polygon)){
return true;
}
});
return false;
}

迭代多边形数组,如果满足条件则返回true,函数结束。如果条件不满足,则循环中断并返回false。为什么不是所有的代码路径都返回值?

方法PointLiesWithinAtleast1Polygon总是返回false。当您在lambda函数中执行return true;时,您将退出lambda并返回PointLiesWithinAtleast1Polygon函数。

Java版本
function PointLiesWithinAtleast1Polygon(point: CLLocationCoordinate2D, polygons: Array<GMSPath>){
for (GMSPath polygon : polygons) 
{ 
if(!GMSGeometryContainsLocation(point, polygon)){
return false;
}
}
return true;
}

就像你在评论中说的,你可以在匿名函数之外定义一个布尔值,或者你可以使用正常的for loop并检查是否满足标准。

在Typescript中,你可以使用Arrayevery方法来检查每个对象是否有特定的条件。

function PointLiesWithinAtleast1Polygon(point: CLLocationCoordinate2D, polygons: Array<GMSPath>){
return polygons.every((polygon: GMSPath) =>{
return GMSGeometryContainsLocation(point, polygon);
});
}

最新更新