Swift 从数组中寻找最近的目标 cgfloat 的代码优化
Swift Code optimization for finding nearest target cgfloat from an array
我想开发一种方法,从数组中搜索最近的 cgfloat 到目标值。
在植入的时候,编译需要1s。谁能告诉我们更好的方法,它也可以缩短以下代码块的编译时间?
警告:
Instance method 'nearest(to:)' took 1016ms to type-check (limit: 300ms)
我的作品:
extension Array where Element == CGFloat {
func nearest(to x: CGFloat) -> CGFloat {
let result = self.min(by: {abs([=12=] - x) < abs( - x)})
return result ?? .zero
//return self.reduce(self.first!) { abs( - x) < abs([=12=] - x) ? : [=12=] }
}
}
只需添加明确的类型信息:
func nearest(to x: CGFloat) -> CGFloat {
let f: (CGFloat, CGFloat) -> Bool = { (lhs: CGFloat, rhs: CGFloat) in
abs(lhs - x) < abs(rhs - x)
}
let result: CGFloat? = self.min(by: f)
return result ?? CGFloat.zero
}
我想开发一种方法,从数组中搜索最近的 cgfloat 到目标值。
在植入的时候,编译需要1s。谁能告诉我们更好的方法,它也可以缩短以下代码块的编译时间?
警告:
Instance method 'nearest(to:)' took 1016ms to type-check (limit: 300ms)
我的作品:
extension Array where Element == CGFloat {
func nearest(to x: CGFloat) -> CGFloat {
let result = self.min(by: {abs([=12=] - x) < abs( - x)})
return result ?? .zero
//return self.reduce(self.first!) { abs( - x) < abs([=12=] - x) ? : [=12=] }
}
}
只需添加明确的类型信息:
func nearest(to x: CGFloat) -> CGFloat {
let f: (CGFloat, CGFloat) -> Bool = { (lhs: CGFloat, rhs: CGFloat) in
abs(lhs - x) < abs(rhs - x)
}
let result: CGFloat? = self.min(by: f)
return result ?? CGFloat.zero
}