2015-03-26 9 views
10

Im Abschnitt Basic Operators heißt es in der Swift-Programmiersprache, dass ++ ein gültiger Operator ist:Verwendung des Inkrementoperators gibt Buildfehler "swift Unary operator '++" kann nicht auf einen Operanden vom Typ' Int 'angewendet werden

„komplexere Beispiele sind die logischen uND-Operator & & (wie wenn enteredDoorCode & & passedRetinaScan) und der Inkrementoperator ++ i, welche eine Verknüpfung ist, den Wert von i um 1 zu erhöhen,. "

Auszug aus: Apple Inc." The Swift Programmiersprache. "IBooks. https://itun.es/gb/jEUH0.l

Allerdings, wenn Sie dies auf einem Spielplatz versuchen;

import UIKit 

let i = 0 
i++ 

A Buildfehler zeigt:

SWIFT unärer Operator '++' kann nicht auf einen Operanden des Typs angewendet werden, 'int'

Warum?

+0

Dank für die Antworten. Hoffentlich rettet das andere vor ein paar Minuten Kopfschütteln und Unglauben! –

Antwort

13

Ja, nicht der am besten formulierte Compilerfehler. Das Problem ist, dass Sie i mit let deklariert haben. Da Ganzzahlen Werttypen sind, bedeutet dies, dass i unveränderlich ist - sie kann nicht geändert werden, wenn erst einmal ein Wert zugewiesen wurde.

Wenn Sie i als var i = 0 deklarieren, wird der Code kompiliert.

3

Sie haben i als unveränderlich definiert mit let. Versuchen Sie stattdessen var i = 0.

3

Auch, wenn Sie den Wert der Variablen eines Werttyps (Strukturen oder Aufzählungen) innerhalb eines davon Methoden zu ändern, müssen Sie diese Methode als mutierenden definieren:

mutating func modify() { 
    ++i 
}