【发布时间】:2016-07-04 23:28:32
【问题描述】:
为什么结构体在 Swift 中不能有递归值类型? 这是对语言的临时限制还是符合预期?
我觉得将二叉树节点声明为具有递归类型的结构的能力是最自然的实现。
struct TreeNode<E>{
var leftNode:TreeNode<E>
var rightNode:TreeNode<E>
var element:E
}
【问题讨论】:
-
你需要先了解引用类型和值类型的区别。你写的东西在大多数语言中是不可能的。例如,在 C/Obj-C/C++ 中,
leftNode和rightNode必须是指针。在 Swift 中,如果你想使用引用,你应该使用class而不是struct。另请注意,您可能需要选项。