2014-09-05 12 views
21

mi sembra di avere problemi istanziare una matrice vuota di un tipo di classe nidificato utilizzando la sintassi [foo]() stile:Perché non è possibile creare un'istanza di una matrice vuota di una classe nidificata?

// 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]() 

E 'questo qualcosa che sto equivoco: è prima del mio caffè, ma ho controllato il rilascio note, e penso che dovresti essere in grado di riferirti a classi nidificate come questa o ad un bug nella beta 7?

Questo funziona bene come una soluzione:

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

Esistono altri casi in cui la sintassi '[tipo]()' non funziona, ad es. con le tuple. Invia una segnalazione di bug ad Apple. –

+0

@MartinR Grazie. Fiducia adeguatamente sostenuta dal tuo commento e una tazza di caffè, lo farò, e risponderò anche alla domanda. –

risposta

38

Questo appare sicuramente come un bug nel compilatore, in particolare per quanto siete ammessi creare un'istanza di un matrice vuota di una classe annidata proprio bene; semplicemente non funziona con la sintassi di inizializzazione.

Alzerò un bug. Nel frattempo, per tutti coloro che verifica il problema, è possibile lavorare intorno ad esso utilizzando la sintassi compito con una matrice vuota e una classe specificato per la variabile, piuttosto che la sintassi del costruttore:

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

È ancora una cosa sull'orlo del 2016? – dVaffection

+1

@dVaffection Tutto quello che posso dire è che il mio bug è stato chiuso come duplicato di [un altro, che è ancora aperto] (http://openradar.appspot.com/19812302). –

+0

È ancora un bug come oggi, la soluzione funziona bene – jrmgx

1

Un altro modo per farlo è quello di utilizzare Costruttore Array<T>().

let arrayOfNestedClass = Array<Wrapper.InsideClass>() 
Problemi correlati