反转数组的 for 循环
Reverse a for loop of an array
我正在尝试创建一个函数,该函数应该根据给定的每个坐标计算 90 度和 270 度的坐标..
并保存在arrayLocationOffset数组中
var arrayLocations : [CLLocationCoordinate2D] =
[
CLLocationCoordinate2D(latitude: 45.15055543976834, longitude: 11.656891939801518 ),
CLLocationCoordinate2D(latitude: 45.154446871287924, longitude: 11.66058789179949),
]
// simplify only 2 coordinate
我使用这个 for 循环来执行操作:
func createCoordinatePoly() {
let polypoint = arrayLocations.count
for i in 0..<polypoint {
let coord = arrayLocations[i]
// calc LH
let lhCoord = coord270(coord: coord)
arrayLocationOffset.append(lhCoord)
}
for i in 0..<polypoint { // shuld revers this for loop and get first the last index
let coord = arrayLocations[i]
// calc LH
let RhCoord = coord90(coord: coord)
arrayLocationOffset.append(RhCoord)
}
debugPrint("aggiunto array poly \(arrayLocationOffset.count)")
}
arrayLocationOffset 必须有特定的顺序,否则我无法在 Mapkit 中正确绘制多边形。
为了获得第二个 forLoop 的特定顺序(我计算 RHside 的地方),我应该从最后一个数组索引开始计算回到第一个...
这可能吗?
谢谢
已解决:
var reversIndex = polypoint-1
for _ in 0..<polypoint {
let coord = arrayLocations[reversIndex]
// calc LH
let RhCoord = coord90(coord: coord)
arrayLocationOffset.append(RhCoord)
reversIndex -= 1
}
我用的是反向索引,从末尾开始...
顾名思义,您可以使用 reversed()
.
反转数组
您的代码相当 objective-c-ish。枚举数组的更好方法是快速枚举,因为您实际上不需要索引。
for coord in arrayLocations { ...
和
for coord in arrayLocations.reversed() { ...
然而,还有一种 更快捷 的方法 map
ping 阵列
func createCoordinatePoly() {
arrayLocationOffset.append(contentsOf: arrayLocations.map{coord270(coord: [=12=])})
arrayLocationOffset.append(contentsOf: arrayLocations.reversed().map{coord90(coord: [=12=])})
debugPrint("aggiunto array poly \(arrayLocationOffset.count)")
}
我正在尝试创建一个函数,该函数应该根据给定的每个坐标计算 90 度和 270 度的坐标..
并保存在arrayLocationOffset数组中
var arrayLocations : [CLLocationCoordinate2D] =
[
CLLocationCoordinate2D(latitude: 45.15055543976834, longitude: 11.656891939801518 ),
CLLocationCoordinate2D(latitude: 45.154446871287924, longitude: 11.66058789179949),
]
// simplify only 2 coordinate
我使用这个 for 循环来执行操作:
func createCoordinatePoly() {
let polypoint = arrayLocations.count
for i in 0..<polypoint {
let coord = arrayLocations[i]
// calc LH
let lhCoord = coord270(coord: coord)
arrayLocationOffset.append(lhCoord)
}
for i in 0..<polypoint { // shuld revers this for loop and get first the last index
let coord = arrayLocations[i]
// calc LH
let RhCoord = coord90(coord: coord)
arrayLocationOffset.append(RhCoord)
}
debugPrint("aggiunto array poly \(arrayLocationOffset.count)")
}
arrayLocationOffset 必须有特定的顺序,否则我无法在 Mapkit 中正确绘制多边形。 为了获得第二个 forLoop 的特定顺序(我计算 RHside 的地方),我应该从最后一个数组索引开始计算回到第一个...
这可能吗?
谢谢
已解决:
var reversIndex = polypoint-1
for _ in 0..<polypoint {
let coord = arrayLocations[reversIndex]
// calc LH
let RhCoord = coord90(coord: coord)
arrayLocationOffset.append(RhCoord)
reversIndex -= 1
}
我用的是反向索引,从末尾开始...
顾名思义,您可以使用 reversed()
.
您的代码相当 objective-c-ish。枚举数组的更好方法是快速枚举,因为您实际上不需要索引。
for coord in arrayLocations { ...
和
for coord in arrayLocations.reversed() { ...
然而,还有一种 更快捷 的方法 map
ping 阵列
func createCoordinatePoly() {
arrayLocationOffset.append(contentsOf: arrayLocations.map{coord270(coord: [=12=])})
arrayLocationOffset.append(contentsOf: arrayLocations.reversed().map{coord90(coord: [=12=])})
debugPrint("aggiunto array poly \(arrayLocationOffset.count)")
}