Swift 结构类型递归

标签 swift recursion struct

为什么 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/

相关文章:

c - 释放 C 中结构内的 char 数组

c - stackInit 函数出现段错误,我不明白为什么

ios - 在 Swift 的方法之外访问数据

ios - 如何使用 Swift 在文本字段(从右到左)输入货币格式?

ios - 滚动时 UITableViewCell contenview 上的阴影率增加

python - 哪个代码删除了排列中的重复组合

Java 递归计数参数

c - 访问 char 数组中结构的空指针

macos - NS窗口闪烁

algorithm - 分而治之矩阵乘法是否执行与经典矩阵乘法相同数量的加法/减法?