Arrays 为什么可以';我在创建嵌套结构的数组时是否使用短数组构造函数语法?

Arrays 为什么可以';我在创建嵌套结构的数组时是否使用短数组构造函数语法?,arrays,swift,struct,Arrays,Swift,Struct,考虑嵌套在另一个结构中的结构: struct Struct1 { struct Struct2 { var name: String? } } 我想创建一个Struct2值数组。起初我试着: var struct2Array = [Struct1.Struct2]() 但这会导致编译器错误: 我可以通过声明变量的类型并使用空数组或更详细的语法来创建数组: var struct2Array: [Struct1.Struct2] = [] var struct2A

考虑嵌套在另一个结构中的结构:

struct Struct1 {
    struct Struct2 {
        var name: String?
    }
}
我想创建一个
Struct2
值数组。起初我试着:

var struct2Array = [Struct1.Struct2]()
但这会导致编译器错误:

我可以通过声明变量的类型并使用空数组或更详细的语法来创建数组:

var struct2Array: [Struct1.Struct2] = []
var struct2ArrayVerbose = Array<Struct1.Struct2>()
var struct2Array:[Struct1.Struct2]=[]
var struct2ArrayVerbose=Array()

但是为什么不能对嵌套结构使用速记初始值设定项呢?

这只是语言中的一个漏洞。毕竟,
[Type]
语法只是语法上的糖分;正如您正确地说的,如果您对
Array
使用真正的语法,或者使用
[Type]
而不是作为构造函数,那么就没有问题了。您还可以使用类型别名解决此问题:

struct Struct1 {
    struct Struct2 {
        var name: String?
    }
}

typealias Struct2 = Struct1.Struct2

var struct2Array = [Struct2]()

并向bugs.swift.org提交一个bug。谢谢matt!我正要问我是否应该在Swift Jira板上提交一张罚单。现在开始吧。再次感谢!这里还有一个:。@MartinR啊,我想我应该搜索嵌套类型。我认为这只是结构的问题。谢谢。@MartinR,不错。既然我们有了bugs.swift.org,他仍然应该提交一个bug;它的响应性强得多。有时我觉得我花更多的时间寻找副本而不是回答…:)-在这种情况下,对
[swift]嵌套类型数组的搜索立即成功。在swift.org上打开了一张票证
struct Struct1 {
    struct Struct2 {
        var name: String?
    }
}

typealias Struct2 = Struct1.Struct2

var struct2Array = [Struct2]()