我正在写一个Swift extension
,它检查数组中是否有两个或更多的CGPoint具有相同的坐标。有了这段代码,我可以检查数组中的所有点。但是如何只检查几个元素(不是全部)呢?
这是分机号...
import Foundation
extension Array where Element : Equatable {
func equalCoordinates() -> Bool {
if let firstElement = first {
return dropFirst().contains { $0 == firstElement }
}
return true
}
}
如果两个(或更多)红色CG点具有相同的坐标,则必须将其转换为绿色。
...以及ViewController中使用equalCoordinates()
方法的代码:
func drawn() {
let colorArray = array.map { $0.pointCoord()[0] }
for dot in array {
for cPoint in dot.pointCoord() {
if colorArray.equalCoordinates() {
let altColor = dot.alternativePointColour()
draw(cPoint, color: altColor)
} else {
let color = dot.pointColour()
draw(cPoint, color: color)
}
}
}
}
...........
Swift.print(colorArray.equalCoordinates())
...........
2条答案
按热度按时间bfhwhh0e1#
完全不考虑效率(根据数据的大小可以提高效率),我可能会这样做。每一部分都很简单,所以你应该能够适应各种不同的输出(例如,如果你喜欢
IndexSet
以外的输出)。ttvkxqim2#
Swift 2.2版本