微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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.jb51.cc/swift/319607.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐