我有以下简单的扩展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
}
}
Run Code Online (Sandbox Code Playgroud)
从Beta 4开始,我得到"不能在变量值上使用变异成员:'self'是不可变的"在round返回函数中 - 有没有人有任何线索?
Ham*_*ish 36
这是由于与协议上的新舍入函数的命名冲突FloatingPoint,round()并且rounded()从Xcode 8 beta 4开始已添加到Swift 3中.
因此,您需要通过指定您round()在Darwin模块中引用全局函数来消除歧义:
return Darwin.round(v) * divisor
Run Code Online (Sandbox Code Playgroud)
或者,甚至更好,简单地利用新的舍入函数和调用rounded()上v:
return v.rounded() * divisor
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4377 次 |
| 最近记录: |