Ich habe ein NSMutableArray in swift mit let
und erstellt
Wenn ich addObject im muableArray hinzufüge, fügt es es hinzu, obwohl ich
Benutzte let
, um eine Konstante zuzuweisen. Kann jemand erklären, wie let
in swift funktioniert? Wenn Sie später keinen Wert hinzufügen können, wie lautet das Folgende
Code funktioniert?
Haftungsausschluss: Diese Antwort gilt nur für NS-Datenstrukturen, siehe @Eric Ds Antwort für das vollständige Bild
let
bei Verwendung mit einer Klasse bedeutet nur, dass die Variable nicht geändert werden kann, zB in ein anderes Array. Wenn das Array nicht editierbar sein soll, verwenden Sie ein normales NSArray und kein veränderbares
Ich denke, Ihr Verständnis davon, was eine konstante Variable ist, ist ein bisschen zu streng.
Klassen sind Referenztypen und NSMutableArray ist eine Klasse.
NSMutableArray von Foundation unterscheidet sich von Swift's Array: Letzteres ist ein -Werttyp .
Wenn Sie eine konstante NSMutableArray erstellen:
%Vor%dann funktioniert das:
%Vor%aber das nicht:
%Vor%, weil Sie den Inhalt der Referenz ändern können, aber Sie können nicht ändern, was der Konstante zugewiesen ist.
Auf der anderen Seite, mit Swift's Array:
%Vor%Die Konstante kann nicht geändert werden, da es sich um einen Wert und nicht um eine Referenz handelt.
%Vor%Doc: Strukturen und Aufzählungen sind Werttypen und Klassen sind Referenztypen
Tags und Links ios swift nsmutablearray