gpt4 book ai didi

swift - 从 Reduce 获取任意类型

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:41:12 24 4
gpt4 key购买 nike

我正在做一个非常简单的操作。我正在对 map 中的一堆位置进行排序以创建一个封闭的圆圈,如下所示:

var maxLong: Double = -180
var maxLat: Double = -180
var minLong: Double = 180
var minLat: Double = 180

for coord in inCoordinates {
maxLong = max(coord.longitude, maxLong)
maxLat = max(coord.latitude, maxLat)
minLong = min(coord.longitude, minLong)
minLat = min(coord.latitude, minLat)
}

let nw: CLLocation = CLLocation(latitude: maxLat, longitude: minLong)
let se: CLLocation = CLLocation(latitude: minLat, longitude: maxLong)
let center = CLLocationCoordinate2D(latitude: (maxLat + minLat) / 2.0, longitude: (maxLong + minLong) / 2.0)
let radiusInMeters = abs(nw.distance(from: se)) / 2.0

return MKCircle(center: center, radius: radiusInMeters)

非常简单(是的,我知道 IDL 问题,但我想保持简单)。

我想知道的是,如果有某种方法可以将循环简化为 reduce 的变体,那么您最终会得到这样的结果:

let enclosingRect: MKMapRect = inCoordinates.magikalReduce {
// Magic Happens Here -Queue Doug Henning GIF
}

所以返回的矩形包含蒸馏点。

是的,我知道我可以简单地扩展数组(可能带有类型限定符)来使用计算属性来执行此操作,但这有点违背了这样做的目的。以上是相当有效的,我宁愿不增加开销,只是为了花哨(这意味着,即使我能做到,使用起来也可能效率太低)。

与其说是技术需求,不如说这是一种好奇心探索。上面的代码对我来说很好,而且相对灵活。

最佳答案

你是说

// calculate the enclosing rect with `reduce` and `union`, you have to create an `MKMapRect` from each coordinate
let enclosingRect = inCoordinates.reduce(MKMapRect.null) { $0.union(MKMapRect(origin: MKMapPoint($1), size: MKMapSize())) }

关于swift - 从 Reduce 获取任意类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53399754/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com