我有这段代码
chdir
但是,如果我想更新节点的值呢?我尝试在case中做value = newValue,但似乎不允许。
我的树/节点的结构:
tree match {
case EmptyNode =>
//do stuff with empty node
case Node(left, right, value) =>
//do stuff with node contents
}
答案 0 :(得分:4)
您可以使用@
表示法引用实际节点:
case n@Node(left, right, value) => n.value = "newValue"
答案 1 :(得分:1)
诺亚的答案确实显示了改变节点价值的方法,但你不应该这样做。 scala的主要思想之一是提升不可变数据结构,即一旦你定义了一个对象,你就不会改变它。
这在树中特别重要,因为通过更改节点的值,可能会使树不一致(节点左侧的值可能不再小)。相反,始终保持节点值不可变,并根据需要添加或删除节点,在删除节点时注意树的重新平衡。