Swift 如何从枚举中检索关联值
我有一个树数据结构,它保存一个关联的值,当前调用它时,它只返回完整的树,我试图从这些值中访问各个值。我尝试过使用if-let模式匹配,但没有成功Swift 如何从枚举中检索关联值,swift,Swift,我有一个树数据结构,它保存一个关联的值,当前调用它时,它只返回完整的树,我试图从这些值中访问各个值。我尝试过使用if-let模式匹配,但没有成功 public indirect enum BinaryTree<T> { //left child, value, right child case node( BinaryTree<T>, T,T,T, BinaryTree<T>) case empty } extension
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)
public间接枚举二进制树{
//左子项、值、右子项
案例节点(二进制树,T,T,T,二进制树)
空箱
}
扩展二进制树:CustomStringConvertible{
公共变量说明:字符串{
切换自身{
案例let.节点(左、值、应答1、应答2、右):
返回“\(值)\(应答1)\(应答2)\(左.说明)\(右.说明)”
案例。空:
返回“”
}
}
}
让node4=BinaryTree.node(.empty,“4”,“A”,“B”,“.empty)
让node5=BinaryTree.node(.empty,“5”,“A”,“B”,“.empty)
让node6=BinaryTree.node(.empty,“6”,“A”,“B”,“.empty)
让node7=BinaryTree.node(.empty,“7”,“A”,“B”,“.empty)
//左侧的中间节点
设fourtwoove=BinaryTree.node(node4,“2”,“A”,“B”,node5)
//右侧的中间节点
设sixtreeseven=BinaryTree.node(node6,“3”,“A”,“B”,node7)
//根节点
让tree=BinaryTree.node(四二五,“1”,“A”,“B”,六三个seven)
如何从枚举中获取值、answer1和answer2您使用的是关联的值,而不是元组。考虑到这一点,当您推断希望使用
if let
提取值时,这将起作用:
if case let .node(_, value, answer1, answer2, _) = tree {
// process value, answer1 and answer2
}
要从枚举中获取值的确切位置?