如何从枚举中检索关联的值

  • 本文关键字:关联 检索 枚举 swift
  • 更新时间 :
  • 英文 :


我有一个保存关联值的树数据结构,目前调用它时只返回完整的树,IM试图从值中访问单个值。我尝试使用 if let to 模式匹配,但没有成功。

public indirect enum BinaryTree<T> {
//left child, value, right child
case node( BinaryTree<T>, T,T,T, BinaryTree<T>)
case empty
}
extension BinaryTree: CustomStringConvertible {
public var description: String {
switch self {
case let .node(left, value, answer1, answer2, right):
return " (value) (answer1) (answer2) (left.description) (right.description)"
case .empty:
return ""
}
}
}


let node4 = BinaryTree.node(.empty, "4","A","B", .empty)
let node5 = BinaryTree.node(.empty, "5","A","B", .empty)
let node6 = BinaryTree.node(.empty, "6","A","B",.empty)
let node7 = BinaryTree.node(.empty, "7","A","B",.empty)


// intermediate nodes on the left
let fourtwofive = BinaryTree.node(node4, "2","A","B",node5)

// intermediate nodes on the right
let sixthreeeseven = BinaryTree.node(node6, "3","A","B",node7)
// root node
let tree = BinaryTree.node(fourtwofive, "1","A","B",sixthreeeseven)

如何从枚举中获取值、答案 1 和答案 2

您正在使用关联的值,而不是元组。考虑到这一点,正如您推断的那样,您希望使用if let提取值,这将起作用:

if case let .node(_, value, answer1, answer2, _) = tree {
// process value, answer1 and answer2
}

最新更新