我正在尝试迭代我所做的自定义类的数组,但它告诉我并非所有代码路径都返回值。在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
函数。
function PointLiesWithinAtleast1Polygon(point: CLLocationCoordinate2D, polygons: Array<GMSPath>){
for (GMSPath polygon : polygons)
{
if(!GMSGeometryContainsLocation(point, polygon)){
return false;
}
}
return true;
}
就像你在评论中说的,你可以在匿名函数之外定义一个布尔值,或者你可以使用正常的for loop
并检查是否满足标准。
在Typescript中,你可以使用Array
的every
方法来检查每个对象是否有特定的条件。
function PointLiesWithinAtleast1Polygon(point: CLLocationCoordinate2D, polygons: Array<GMSPath>){
return polygons.every((polygon: GMSPath) =>{
return GMSGeometryContainsLocation(point, polygon);
});
}