gpt4 book ai didi

java - Scala 中的 ListNode 实现

转载 作者:行者123 更新时间:2023-11-30 06:56:31 29 4
gpt4 key购买 nike

大家好,我是 Scala 的新手,想知道如何将一个简单的 ListNode 类从 Java 重写到 Scala。

在 java 中它看起来像下面,我可以创建一个头节点 head = new ListNode(0),然后设置 head.next = new ListNode(1)

// Java code
public class ListNode {
public int val; // data stored in this node
public ListNode next; // link to next node in the list

public ListNode(int data) {
this.val = data;
}
}

但是我发现在Scala中很难重写相同的逻辑,下面是ListNode的一个案例类

// Scala code
case class ListNode[T](vl: T, nt: ListNode[T]) {
def value: T = vl
def next: ListNode[T] = nt
}

当我尝试实例化一个头节点并实例化另一个新节点并为其设置 head.next 时失败了:

scala> val head = ListNode(1, Nil)
<console>:9: error: type mismatch;
found : scala.collection.immutable.Nil.type
required: ListNode[?]
val head = ListNode(1, Nil)

我正在考虑将“下一个列表节点”放入 Option[] 中以处理 null 情况,但它似乎变得越来越复杂......在 Scala 中是否有一种简单而正确的方法来做到这一点?

非常感谢。

最佳答案

您正在混合特征定义和实际值。我认为您需要的 Scala 代码只是:

case class ListNode[T](value: T, next: ListNode[T] = null)

根据用例,您可能希望将 next 更改为 Option[ListNode[T]] 和/或将其定义为 var next 如果您希望它可变。

关于java - Scala 中的 ListNode 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34342379/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com