【问题标题】:Xcode 8 Beta 4 Swift 3 - "round" behaviour changedXcode 8 Beta 4 Swift 3 - “圆形”行为改变
【发布时间】:2016-08-04 12:41:34
【问题描述】:

我有以下对Double 的简单扩展,它在 Xcode 8 beta 3 之前的所有版本中都可以正常工作

public extension Double {
    public func roundTo(_ decimalPlaces: Int) -> Double {
        var v = self
        var divisor = 1.0
        if decimalPlaces > 0 {
            for _ in 1 ... decimalPlaces {
                v *= 10.0
                divisor *= 0.1
            }
        }
        return round(v) * divisor
    }
}

从 Beta 4 开始,我在返回的 round 函数上收到“不能在不可变值上使用变异成员:'self' 是不可变的” - 有人知道吗?

【问题讨论】:

    标签: swift3


    【解决方案1】:

    这是由于与 FloatingPoint 协议、round()rounded() 上的 the new rounding functions 的命名冲突,它们已从 Xcode 8 beta 4 开始添加到 Swift 3。

    因此,您需要通过在 Darwin 模块中指定您指的是全局 round() 函数来消除歧义:

    return Darwin.round(v) * divisor
    

    或者,更好的是,只需使用新的舍入函数并在v 上调用rounded()

    return v.rounded() * divisor
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-21
      • 2017-02-15
      • 2016-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多