为什么 Swift 中的结构体不能有递归值类型? 这是语言的临时限制还是有意为之?
我觉得将二叉树节点声明为其中具有递归类型的结构的能力是最自然的实现。
struct TreeNode<E>{
var leftNode:TreeNode<E>
var rightNode:TreeNode<E>
var element:E
}
最佳答案
答案就在你的问题中:结构是值类型。如果您将子结构 B
包含到结构 A
中,这意味着类型 A
的一个对象将具有大小 sizeof( all_other_fields_of_A) + sizeof(B)
。因此,值类型不能递归:它将具有无限大小。
关于Swift 结构类型递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36080491/