Dieser Code funktioniert,Warum können Sie in Swift kein leeres Array initialisieren?
let people = ["Tom","Dick","Harry"]
aber dieser Code nicht,
let people = []
und noch tut dies (Veränderlichkeit zählt nicht) ohne ersichtlichen Grund nicht funktioniert:
var people = []
Die Der Fehler ist "Kann den Ausdruckstyp Array nicht in den Typ 'ArrayLiteralConvertible' konvertieren, aber das ergibt für mich keinen Sinn und none von otherquestions die in einer Suchadresse diese Frage zeigen.
Zuerst dachte ich, es mit Typinferenz zu tun hatte, aber das beweist nicht das Problem zu sein (zumindest nicht nur, dass!) Da, obwohl dies funktioniert (mit Typ angegeben)
var people:Array = [""]
dies tut nicht (wie oben angegeben mit Typ, aber kein String innerhalb des Array angegeben):
var people:Array = []
Seit dem letzten dieser beiden den Typ explizit angegeben hat, sollte es nicht einen String innerhalb des Array übergeben müssen.
Einige Sprachen (weirdly!) Betrachten die Art der Variablen auf die Art des Artikels innerhalb Array zu verweisen, also versuchte ich auch String
statt Array
angibt, aber die gleichen Ergebnisse erhielt. Das erste Werk und die zweite nicht:
var people:String = [""]
var people:String = []
Typ-Inferenz benötigt genügend Kontext, um daraus abzuleiten. –
Das * hat * mit Typinterferenzen zu tun - der Schlüssel ist, dass es mehr mit dem Typ zu tun hat, den das Array * enthält *, als mit dem Typ der Variablen 'people'. Der Compiler * weiß * es ist ein 'Array'. Aber die Frage ist: Ein 'Array' von * was *? –