Wie kann ich einem Struct-Mitglied einen Wert zuweisen?

8
%Vor%

Ich kann keinem Member einer Struktur Werte zuweisen. Ich erhalte den folgenden Fehler:

Fehler: Kann 'name' nicht zu 'petItem' zuweisen.

Gibt es eine Abhilfe oder muss ich ALLE Werte während der Instanzerstellung zuweisen?

    
Frederick C. Lee 15.08.2014, 22:38
quelle

1 Antwort

8

Der Grund für diesen Fehler ist, dass petItem unveränderlich ist (Sie können es nicht ändern) innerhalb von addItem . Wenn Sie die übergebene Instanz ändern möchten, müssen Sie die Funktion folgendermaßen deklarieren:

%Vor%

Leider haben Sie jetzt einen weiteren Fehler, da die Variable petItem , die Sie ursprünglich mit let erstellt haben, unveränderlich ist. Also ändere das in var und schon gehts los:

%Vor%

Nun können Sie Ihren Code ausführen, und Sie werden feststellen, dass die name , die Sie in addItem() festgelegt haben, nicht in Ihrer petItem -Variable ausgegeben wird. Was ist passiert? In Swift struct Instanzen werden nach Wert an Funktionen übergeben, so dass nichts, was mit einem Parameter in der Funktion passiert, die ursprüngliche Variable beeinflusst, außer der Parameter wird als inout deklariert. Also machen wir das:

%Vor%

und Sie müssen Ihren Aufruf ändern, um zu zeigen, dass Sie wissen, dass dieser Parameter geändert werden kann:

%Vor%     
Nate Cook 16.08.2014 02:07
quelle

Tags und Links