Я модернизирую раздвоенный Framework Свифт 3.Как использовать изменяемую переменный в CGFloat удлинению в Swift 3
Рабочей Свифта 2 Кода:
public extension CGFloat {
var roundToNearestHalf: CGFloat {
return round(self * 2)/2
}
}
В Swift 3, возвращение бросков compiler error : Cannot use mutating member on immutable value: 'self' is immutable
.
Я смог найти множество документов, почему метод Struct должен изменяться. Но пока я не могу найти решение для переменной.
Если я ввожу мутирует ключевое слово, компилятор бросает ошибку: Expected declaration
public extension CGFloat {
var roundToNearestHalf: CGFloat mutating {
return round(self * 2)/2
}
}
Мои исследования по этому вопросу, что код, кажется, неуместны - поэтому она должна быть внутри функции.
public extension CGFloat {
mutating func roundToNearestHalf() -> CGFloat {
var roundToNearestHalf: CGFloat {
return round(self * 2)/2
}
}
}
Теперь компилятор жалуется на `*` `
исследований на этот вопрос привел меня к this тему, что предлагает использовать функцию round
, как я пытаюсь слишком ,
Поскольку этот код явно работал до Swift 3, я хотел бы знать, почему этого больше нет. Почему var должен быть объявлен как изменяемый сейчас? И как мне нужно объявить var roundToNearestHalf
сейчас? Помощь очень ценится.
Вам не нужно (и не можете) отмечать что-либо как 'mutating' - вы просто нужно сказать 'return Darwin.round (self * 2)/2' или' (self * 2) .rounded()/2' – Hamish
'(self * 2) .rounded()/2' сделал это, спасибо вам большое много для вашего efford –
@Hamish не стесняйтесь отвечать –