У меня есть древовидная структура данных, которая содержит ассоциированное значение, в настоящее время при вызове она возвращает только полное дерево, и я пытаюсь получить доступ к отдельным значениям из значений.Я пытался использовать сопоставление 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)
как мне получить значение, answer1 и answer2 из перечисления