【问题标题】:Swift Code optimization for finding nearest target cgfloat from an array用于从数组中查找最近的目标 cgfloat 的 Swift 代码优化
【发布时间】:2021-04-15 08:16:23
【问题描述】:

我想开发一种方法,从数组中搜索最近的 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($0 - x) < abs($1 - x)})
        return  result ?? .zero 
        //return self.reduce(self.first!) { abs($1 - x) < abs($0 - x) ? $1 : $0 }
    }
}

【问题讨论】:

    标签: swift compiler-errors


    【解决方案1】:

    只需添加明确的类型信息:

    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
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-27
      • 1970-01-01
      • 2022-11-03
      相关资源
      最近更新 更多