2014-09-05 84 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>() 
相关问题