为什么我不能在指定的时间点返回self
?
indirect enum BinarySearchTree<E: Comparable> {
case leaf
case node(BinarySearchTree<E>, E, BinarySearchTree<E>)
mutating func insert(_ e: E) {
switch self {
case .leaf:
self = .node(.leaf, e, .leaf)
case .node(var left, let v, var right):
if e < v { left.insert(e) }
if e > v { right.insert(e) }
self = .node(left, v, right)
// Why can't I just return self here? e == v, so isn't it already a .node(left, v, right)?
}
}
}
当我运行以下代码时,返回self
var bst = BinarySearchTree<Int>()
bst.insert(3)
bst.insert(5)
程序只是停留在它的初始化阶段,
.node(leaf, 3, leaf)
谢谢!