В уроке от Ray, за которым я следую, у меня установлены следующие свойства
struct ContentView : View {
var rTarget = Double.random(in: 0..<1)
var gTarget = Double.random(in: 0..<1)
var bTarget = Double.random(in: 0..<1)
}
Они, конечно, неизменны, поэтому я не могу изменить их из функции, если я не отмечу эту функцию как мутирующую.
func reset() {
rTarget = Double.random(in: 0..<1)
gTarget = Double.random(in: 0..<1)
bTarget = Double.random(in: 0..<1)
}
Cannot assign to property: 'self' is immutable
Но я называю эту функцию от var body
mutating func reset() {
rTarget = Double.random(in: 0..<1)
gTarget = Double.random(in: 0..<1)
bTarget = Double.random(in: 0..<1)
}
fileprivate mutating func displayAlert() -> Alert {
return Alert(title: Text("Your Score"), message: Text("\(computeScore())"), dismissButton: Alert.Button.destructive(Text("Ok"), onTrigger: {
self.reset()
}))
}
var body: some View {
Button(action: {
self.showAlert = true
}) {
Text("Hit Me!")
}.presentation($showAlert) {
displayAlert()
}
}
Cannot use mutating member on immutable value: 'self' is immutable
Но я не могупометить var body
как mutating
var
'mutating' may only be used on 'func' declarations
Итак, на этом этапе я хочу сбросить значения xTarget
каждый раз, когда пользователь нажимает на кнопку оповещения, а яНе знаю, что будет хорошей практикой на этом этапе.