Swift结构类型的递归值

前端之家收集整理的这篇文章主要介绍了Swift结构类型的递归值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
结构在 Swift中不能有递归值类型.所以后面的代码无法在Swift中编译
struct A {
    let child: A
}

值类型不能递归,因为它将具有无限大小.但我想知道为什么以下代码可以编译?

struct A {
    let children: [A]
}
数组不直接保存其值.数组本质上是一个结构,它保存对包含项的外部内存块的引用.因此,所有阵列占用相同数量的内存,并且在结构中使用它们没有问题.

展示:

struct Value {
    var array: [Int] = [] 
}

var value = Value()
value.array = [0,1,2,3]  // this won't increase the size of the struct!

如果数组的行为不同,则无法动态更改其大小(例如追加元素)或使用其写时复制行为.从本质上讲,数组&字典是包含在值类型中的类.

因此,您的代码可以编译,因为它不是真正的递归.

原文链接:https://www.f2er.com/swift/319607.html

猜你在找的Swift相关文章