gpt4 book ai didi

swift - 进行数组转换的函数式编程方法

转载 作者:行者123 更新时间:2023-11-30 10:18:33 25 4
gpt4 key购买 nike

struct MapVector {
var distance: Double
var bearing: Double
}

func distanceAndBearing() -> [MapVector] {
var points = self.mapPoints
var currPoint:CLLocation = points.first!
points.removeAtIndex(0)

var result: [MapVector] = []
for point: CLLocation in points {
let calc = PointCalculator(initialPoint: currPoint, nextPoint: point)

let v = MapVector(distance: calc.pointDistance, bearing: calc.bearing)
result.append(v)

currPoint = point
}

return result
}

我正在 Swift 中开发一个使用 map 坐标的应用程序。我有一个 CLLocations 数组,我想从中创建一系列距离和方位。上面的代码(为了可读性而稍微简化了,所以可能不是 100% 正确)实现了这一点,但我想以更简洁的方式做到这一点。这是可以用 map 或过滤器来完成的事情吗?仍在尝试了解 FP 的做事方式。

最佳答案

下面是同一问题的简化示例(计算除外):

let numbers = [3, 7, 2, 8, 3, 7, 5]
let result = numbers.isEmpty ? [] :
map(zip(numbers, numbers[1..<numbers.count])) {
(x, y) in
return (diff: x - y, mult: x * y)
}

result[0].diff // -4
result[0].mult // 21

这里我计算数字的差值和乘法。请注意,这仅适用于 Swift 1.2如果您需要早期版本,您应该探索 Zip2 的使用。

关于swift - 进行数组转换的函数式编程方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28723830/

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