Xcode 8 Beta 4 Swift 3 - изменено «круглое» поведение

У меня есть следующее простое расширение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
    }
}

Начиная с бета-версии 4, я получаю сообщение «Не удается использовать мутирующий член для неизменного значения:« Я »является неизменным» наround Функция в ответ - кто-нибудь есть какие-либо подсказки?

Ответы на вопрос(1)

Решение Вопроса

Это связано с конфликтом имен сновые функции округления наFloatingPoint протокол,round() а такжеrounded(), которые были добавлены в Swift 3 начиная с Xcode 8 beta 4.

Поэтому вам либо необходимо устранить неоднозначность, указав, что вы имеете в виду глобальныйround() функция вDarwin модуль:

return Darwin.round(v) * divisor

Или, что еще лучше, просто используйте новые функции округления и вызовитеrounded() наv:

return v.rounded() * divisor

Ваш ответ на вопрос