2014-09-05 96 views
21

我似乎有實例使用[foo]()風格的語法嵌套類類型的空數組問題:爲什麼我不能實例化一個嵌套類的空數組?

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

這事我誤解,這是我的咖啡前,但我檢查了釋放筆記,我認爲你應該能夠引用像這樣的嵌套類 - 或測試版7中的錯誤?

這工作得很好的解決方法:

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

還有其他''type]()'語法不起作用的情況,例如,與元組。向Apple發送錯誤報告。 – 2014-09-05 09:13:37

+0

@MartinR謝謝。您的評論和一杯咖啡適合您的信心,我會這樣做,並回答這個問題。 – 2014-09-05 10:05:07

回答

38

這肯定看起來像在編譯器中的錯誤,特別是你允許實例化一個嵌套類的空數組就好了;它根本不適用於初始化語法。

我會提出一個錯誤。在此期間,任何人遇到的問題,你可以解決它通過使用賦值語法與空數組和變量指定的類,而不是構造函數的語法:

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

它仍然是2016年的事情嗎? – dVaffection 2015-12-21 18:24:29

+1

@dVaffection我可以告訴你的是,我的bug被關閉爲[另一個仍然打開]的副本(http://openradar.appspot.com/19812302)。 – 2015-12-21 19:58:11

+0

它仍然是一個錯誤,因爲今天,解決方法正常工作 – jrmgx 2016-02-25 13:42:08

1

另一種方法是使用Array<T>()構造函數。

let arrayOfNestedClass = Array<Wrapper.InsideClass>() 
相關問題