swift3 - mercadolibre - Xcode 8 Beta 4 Swift 3: comportamiento "redondo" cambiado
acer swift 3 review (1)
Esto se debe a un conflicto de nombres con las nuevas funciones de redondeo en el protocolo FloatingPoint
, round()
y round()
rounded()
, que se han agregado a Swift 3 a partir de Xcode 8 beta 4.
Por lo tanto, es necesario eliminar la ambigüedad especificando que se está refiriendo a la función global round()
en el módulo de Darwin
:
return Darwin.round(v) * divisor
O, mejor aún, simplemente haga uso de las nuevas funciones de redondeo y llame a rounded()
en v
:
return v.rounded() * divisor
Tengo la siguiente extensión simple para Double
, que funcionó bien en todo hasta 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
}
}
A partir de Beta 4, me aparece "No se puede usar miembro mutante en un valor inmutable: ''uno mismo'' es inmutable" en la función round
en el retorno: ¿alguien tiene alguna pista?