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
}