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! 如果数组的行为不同,则无法动态更改其大小(例如追加元素)或使用其写时复制行为.从本质上讲,数组&字典是包含在值类型中的类. 因此,您的代码可以编译,因为它不是真正的递归. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读