scala:value不是ListNode [Int]的成员

时间:2015-12-17 22:06:20

标签: scala

再次告诉我,如果这个问题对你来说很愚蠢,欢迎scala和downvote的新手......

好的,我有一个名为" ListNode"的案例类,下面是我得到的错误:

scala> case class ListNode[Int](vl: Int, nt: ListNode[Int] = null) {
     |     def value: Int = vl
     |     def next: ListNode[Int] = nt
     | }
defined class ListNode

scala> var a = ListNode(1)
a: ListNode[Int] = ListNode(1,null)

scala> var b = ListNode(2)
b: ListNode[Int] = ListNode(2,null)

scala> a.next = b
<console>:11: error: value next_= is not a member of ListNode[Int]
       a.next = b
         ^

我已阅读thisthis以及thisthis以及this,但仍然不明白这意味着什么......

为什么我不能将接下来的节点设置为另一个节点,就像在Java中一样?

非常感谢。

1 个答案:

答案 0 :(得分:2)

我看到两个问题(可能还有更多)。

1 - 您的类型参数应该是参数而不是Int规范。

2 - 如果您要重新分配next的值,那么它必须是var

case class ListNode[T](vl: T, nt: ListNode[T] = null) { 
    val value: T = vl
    var next: ListNode[T] = nt
} 

scala> val a = ListNode(1)
a: ListNode[Int] = ListNode(1,null)

scala> val b = ListNode(2)
b: ListNode[Int] = ListNode(2,null)

scala> a.next = b
a.next: ListNode[Int] = ListNode(2,null)

当然,作为一个案例类,它可以大大简化。

// this is all you need
case class ListNode[T](value: T, var next: ListNode[T] = null)