我正在学习这本书和#34; Functional Swift"以及我不了解的代码片段。
indirect enum Tree <Element: Comparable> {
case Leaf
case Node(Tree <Element>, Element, Tree <Element>)
}
extension Tree {
init() {
self = .Leaf
}
init(_ value: Element) {
self = .Node(.Leaf, value, .Leaf)
}
var isEmpty: Bool {
if case .Leaf = self {
return true
}
return false
}
}
let a = Tree<Int>()
let b = Tree<Int>(5)
a.isEmpty
b.isEmpty
如果案件.Leaf = self 让我感到困惑。为什么 case 不在开关块中,为什么它在条件语句中使用赋值(=)而不是等式(==)。我知道这意味着这个枚举值是.Leaf然后是blablabla,但是我真的不理解的语法。