加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift结构类型的递归值

发布时间:2020-12-14 05:34:01 所属栏目:百科 来源:网络整理
导读:结构在 Swift中不能有递归值类型.所以后面的代码无法在Swift中编译 struct A { let child: A} 值类型不能递归,因为它将具有无限大小.但我想知道为什么以下代码可以编译? struct A { let children: [A]} 数组不直接保存其值.数组本质上是一个结构,它保存对包
结构在 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!

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读