Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 如何从枚举中检索关联值_Swift - Fatal编程技术网

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

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

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

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
}

要从枚举中获取值的确切位置?