当前位置: 首页 > 知识库问答 >
问题:

更新Scala中节点的值?

席言
2023-03-14

我有这个密码

tree match {
            case EmptyNode => 
                //do stuff with empty node
            case Node(left, right, value) =>
                //do stuff with node contents 
}

但是,如果要更新节点的值,该怎么办?我试着在箱子里做value=newValue,但似乎不被允许。

我的树/节点的结构:

sealed trait Tree
case class Node(var left: Tree, var right: Tree, var value: String) extends Tree
case object EmptyNode extends Tree

共有2个答案

翟宾实
2023-03-14

诺亚的回答确实展示了改变节点值的方法,但你不应该这样做,scala的主要思想之一是促进不可变的数据结构,即一旦你定义了一个对象,你就不改变它。

这在树中尤为重要,因为通过更改节点的值,您可能会使您的树不一致(节点左侧的值可能不再更小)。相反,始终保持节点值不变,并根据需要添加或删除节点,在删除节点时注意重新平衡树。

滕弘新
2023-03-14

您可以使用@表示法引用实际节点:

case n@Node(left, right, value) => n.value = "newValue"
 类似资料:
  • SyntaxError:无效输入“h”:预期为“I/I”(第10行,第28列(偏移量:346))“merge(p:primaryconsumer),其中p.name=svc.name” 我100%确信这些名称是唯一的,并且将与现有节点集中的唯一使用者名称相匹配(有待观察)。 当唯一节点属性匹配时,如何将现有属性添加到新数据中?(我希望获得唯一的ID,但我必须能够在匹配上执行新数据的更新)

  • 问题内容: 我目前正在处理xml项目。到目前为止,我已经使用Dom Parser成功地将xml链接到java类。我在下面提供了代码。我正在努力的是将开始日期的月份更新一个月,因此类似2/1 / 2013、3 / 1/2013 …的内容将相应地在xml文件中更改。我在底部有方法调用,但是当我调用它时,xml文件不会更新它的值。帮助将不胜感激 之前的* data.xml * 想要data.xml 之后

  • 在SpringDataNeo44中,我们只有,但例如,当我的UserEntity的属性(电子邮件)更改时,我不知道如何更新该属性。 我也尝试使用neo4j模板,但使用现有节点id保存实体会导致下面的回滚。 如何更新节点或节点属性?

  • 我正在玩一个链接列表类项目的指针,我不知道如何创建到新节点的链接。我有一个类,它包含像这样的方法来操作数据结构。我希望这些节点是从csv文件中读取的出价。 当我从CSV加载所有数据时,我想 创建一个新的出价 将新的出价传递给函数 设置Bid对象的nextBid指针,并更新链接列表的尾部 我将不胜感激为每个出价对象创建新地址的任何指针,因为现在尾节点只'记得'第一个出价的地址。 我复制了下面的代码,

  • 我是JavaFX的新手。我试图编程一个简单的图形用户界面,但我面临着那些可能相关的问题。我用文件选择器设置文件,并想做相当基本的操作: 保存最后使用的文件夹 在VBox中写入选中文件的名称 这是我的代码(编译): 我无法刷新节点以设置当前初始目录或在VBox上显示collecName。我试图通过重新加载对象或调整窗口大小来重新生成它们,但没有任何效果。当我在控制台上打印变量时,我看到它们发生了变化

  • 问题内容: 我有一个XML文件test.xml 我正在尝试在表单提交中使用PHP更新节点xName和yName。因此,我已经使用simplexml_load_file()加载了文件。PHP表单操作代码如下 我想更新节点值,但是上面的代码似乎不正确。谁能帮助我纠正它? 更新:我的问题有点类似于使用PHP更新XML文件,但是在这里,我要从外部文件加载XML,同时还要更新元素而不是属性。那就是我的困惑所