Es funktioniert nicht, da der zusammengesetzte Zuweisungsoperator +=
erwartet, dass die linke Seite eine veränderbare Int
Variable ist. Wenn Sie es count
übergeben, wickelt der Compiler das implizit unverpackte optionale Element ab und sendet stattdessen einen unveränderlichen Int
-Wert, der nicht als inout
-Parameter übergeben werden kann, der +=
erwartet.
Wenn Sie wirklich tun möchten, können Sie +=
überlasten:
func += (left: inout Int!, right: Int) {
left = left! + right
}
Jetzt +=
sendet die linke Seite als implizit ungeöffneten optional ohne es auszupacken und das Auswickeln explizit in der Funktion erfolgt.
var count: Int! = 10
count = count + 10 // 20
count += 10 // 30
Der Bediener benötigt eine Referenz. – Sulthan
können Sie es mehr erklären? –
Die Funktion "+ =" verbraucht eine Int. Sie geben es ein Int !. – scord