前端之家收集整理的这篇文章主要介绍了
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