arrays - 为什么在创建嵌套结构数组时不能使用短数组构造函数语法?

标签 arrays swift struct

<分区>

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

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

我想创建一个 Struct2 值数组。起初我试过:

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

但为什么我不能对嵌套结构使用速记初始化程序?

最佳答案

这只是语言中的一个漏洞。毕竟,[Type]语法只是语法糖;正如您所说的那样,如果您对 Array<Type> 使用真正的语法, 或使用 [Type]但不是作为构造函数,没有问题。您还可以使用类型别名解决它:

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

typealias Struct2 = Struct1.Struct2

var struct2Array = [Struct2]()

关于arrays - 为什么在创建嵌套结构数组时不能使用短数组构造函数语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39041712/

相关文章:

java - 检查泛型数组中是否存在异常实例

c# - 正确的 PInvoke 签名以使用带有 C# 保留内存的嵌套结构?

Javascript 数组初始化行为

arrays - 如何用自定义对象填充二维数组? swift

c - 将数组增加到一定数量

JSON 的 Swifts 解释

ios - 存储目标列表的预期方式

swift - 我在 SpriteKit 上的 scheduledTimer 有问题

C数组的结构段错误

C++结构题