我将代码库迁移到Swift 3,我遇到了一个无法解释或修复的编译问题。
我在Double
扩展程序中有一种方法可将Double
四舍五入到一定数量的数字:
public func roundToPlaces(places: Int) -> Double {
let divisor = pow(10.0, Double(places))
return round(self * divisor) / divisor
}
例如:
12.34567.roundToPlaces(2)
应该返回12.35
。但是,我收到此扩展中使用的round
方法的编译问题。它说我Cannot use mutating member on immutable value: 'self' is immutable
。
关于这里发生了什么的任何想法?我该如何解决这个问题?
答案 0 :(得分:11)
我已经解决了这个问题。将round(self * divisor)
更改为(self * divisor).rounded()
可解决编译问题。