2017-01-02 5 views
2

wir ein leeres Array wie folgt erstellen:warum sollten wir hinzufügen(), wenn wir ein leeres Array erstellen

var newArray1 = [Int]() 

ich meine: was „()“ bedeutet hier, wenn wir ein neues Array zu erstellen, warum don ‚t wir gerade ein neues leeres Array erstellen, indem sie dieses Schreiben:

var newArray2 = [Int] 

ich weiß, es Syntax ist, kann aber jemand erklären, es ein wenig mir, es zu helfen, zu verstehen tief.

+0

Eine weitere Möglichkeit, ein leeres Array zu erstellen, besteht darin, den Typ anzugeben und dann mit einem leeren Array-Literal zu initialisieren: 'var newArray1: [Int] = []'. – vacawama

+0

Sie können auch 'var newArray1 = [] als [Int]' verwenden. – vacawama

+0

@vacawama Nicht. Das ist zu knapp. – Alexander

Antwort

5

Um ein neues Array zu erstellen, verwenden Sie Array<Int>.init(). Die Kurzform für das Aufrufen von Initialisierern besteht darin, einfach die .init: Array<Int>() zu löschen.

[Int] ist eine kurze Hand für Array<Int>.

Setzen wir die beiden zusammen, können wir schreiben Array<Int>.init() als [Int]().

+0

So verstehen Sie den Unterschied zwischen "var b: [Int] = Array()" und "var c: [Int] = []" Warum können wir "Array()" in "[]" ändern? – user7341005

+0

Da Sie den Typ mit einer Typ-Annotation ': [Int]' angegeben haben, kann der Compiler folgern, dass '[]' ein leeres Array-Literal ist, das no enthält 'Int's – Alexander

+0

Woher weißt du das alles? Kannst du einige Dokumente für mich beziehen? – user7341005

2

Der Unterschied ist, dass [Int] einen Typ (Array of Integer) deklariert, während [Int]() ein Aufruf an den Initialisierer des gleichen Typs ist. Dies sind zwei grundlegend verschiedene Operationen. In z.B. Scala diese könnten auf die gleiche Weise geschrieben werden (da scala Ihnen erlaubt, die Klammern für Methoden ohne Parameter wegzulassen), aber in Swift ist dies nicht erlaubt.

+0

'... = [Int]' deklariert * keinen Typ. Es ist keine Deklaration, es ist Aufgabe. Wenn überhaupt, würde das Zuweisen des Typs "... = [Int] .self" erfordern – Alexander

Verwandte Themen