【发布时间】:2016-03-24 09:09:01
【问题描述】:
您好,我是 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 中是否有一种简单而正确的方法来做到这一点?
非常感谢。
【问题讨论】:
标签: java scala scala-collections