2014-09-05 3 views
21

ich scheinen Probleme Instanziieren ein leeres Array einer verschachtelten Klassentyp mit der [foo]() Stil Syntax zu haben:Warum kann ich ein leeres Array einer geschachtelten Klasse nicht instanziieren?

// Playground - noun: a place where people can play 

class outsideClass { 

} 

class Wrapper { 
    class InsideClass { 
    } 
} 

var foo = [outsideClass]() // Works fine 

// Invalid use of '()' to call a value of non-function type '[Wrapper.InsideClass.Type]' 
var bar = [Wrapper.InsideClass]() 

Ist das etwas, ich bin Mißverständnis es vor meinem Kaffee, aber ich habe die Veröffentlichung geprüft Notizen, und ich denke, dass Sie in der Lage sein sollten, sich auf verschachtelte Klassen wie diese zu beziehen - oder einen Fehler in Beta 7?

Dies funktioniert als Behelfslösung fein:

var foobar: [Wrapper.InsideClass] = [] 
+0

Es gibt andere Fälle, in denen die '[type]()' - Syntax nicht funktioniert, z. mit Tupeln. Senden Sie einen Fehlerbericht an Apple. –

+0

@MartinR Danke. Das Vertrauen wird durch Ihren Kommentar und eine Tasse Kaffee unterstützt, ich werde das tun und auch die Frage beantworten. –

Antwort

38

Das sieht auf jeden Fall wie ein Fehler in dem Compiler, vor allem, wie Sie sind ein leeres Array einer verschachtelten Klasse ganz gut zu instanziiert erlaubt; Es funktioniert einfach nicht mit der Initialisierungssyntax.

Ich werde einen Fehler auslösen. In der Zwischenzeit für jemand das Problem auftritt, können Sie es umgehen, durch Zuweisung Syntax mit einem leeren Array und einer bestimmten Klasse für die Variable, anstatt Konstruktor Syntax:

var foobar: [Wrapper.InsideClass] = [] 
+0

Ist es immer noch am Rande des Jahres 2016? – dVaffection

+1

@dVaffection Alles, was ich Ihnen sagen kann, ist, dass mein Fehler als ein Duplikat von [einem anderen, das noch offen ist] geschlossen wurde (http://openradar.appspot.com/19812302). –

+0

Es ist immer noch ein Fehler wie heute, die Abhilfe funktioniert gut – jrmgx

1

Eine andere Möglichkeit, zu verwenden, zu tun ist, Array<T>() Konstruktor.

let arrayOfNestedClass = Array<Wrapper.InsideClass>() 
Verwandte Themen