考虑嵌套在另一个结构内的结构:
struct Struct1 { struct Struct2 { var name: String? } }
我想创建一个Struct2值数组。一开始我尝试过:
Struct2
var struct2Array = [Struct1.Struct2]()
但这给了编译器错误:
error: invalid use of '()' to call a value of non-function type ‘[Struct1.Struct2.Type]’ var struct2Array = Struct1.Struct2
error: invalid use of '()' to call a value of non-function type
‘[Struct1.Struct2.Type]’ var struct2Array = Struct1.Struct2
我可以通过声明变量的类型并使用空数组来创建数组,或者使用更详细的语法:
var struct2Array: [Struct1.Struct2] = [] var struct2ArrayVerbose = Array<Struct1.Struct2>()
但是,为什么不能对嵌套的Struct使用简写初始化程序呢?
这只是语言上的一个漏洞。毕竟,[Type]语法只是语法糖。正确地说,如果您将真正的语法与一起使用Array<Type>,或者将其用作[Type]但不用作构造函数,则没有问题。您也可以使用别名类型解决它:
[Type]
Array<Type>
struct Struct1 { struct Struct2 { var name: String? } } typealias Struct2 = Struct1.Struct2 var struct2Array = [Struct2]()