JAL*_*JAL 3 arrays struct swift
考虑嵌套在另一个结构中的结构:
struct Struct1 {
struct Struct2 {
var name: String?
}
}
Run Code Online (Sandbox Code Playgroud)
我想创建一个Struct2值数组.起初我尝试过:
var struct2Array = [Struct1.Struct2]()
Run Code Online (Sandbox Code Playgroud)
但这会给编译器错误:
Run Code Online (Sandbox Code Playgroud)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>()
Run Code Online (Sandbox Code Playgroud)
但是为什么我不能将速记初始化器用于嵌套的Struct?
这只是语言中的一个漏洞.毕竟,[Type]语法只是语法糖; 正如你正确地说,如果你使用真正的语法Array<Type>,或者使用[Type]但不是作为构造函数,那就没问题了.您还可以使用类型别名解决它:
struct Struct1 {
struct Struct2 {
var name: String?
}
}
typealias Struct2 = Struct1.Struct2
var struct2Array = [Struct2]()
Run Code Online (Sandbox Code Playgroud)