我再说一遍,如果这个问题对你来说很愚蠢的话,欢迎新手来斯卡拉投票.
好的,我有一个名为"ListNode“的case类,下面是我得到的错误:
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
^我读过this,this,this,this和this,但仍然不太明白它的意思.
为什么我不能将旁边的节点设置为另一个节点,就像在Java中一样?
非常感谢。
发布于 2015-12-17 22:22:26
这是因为您使用的是def,这是一个函数。您可能需要使用vars定义case类。
下面的代码可以工作,但您可能需要重新考虑可变案例类的整个概念。
case class ListNode[Int](v1:Int, nt:ListNode[Int]=null) {
var _nt = nt
def value: Int = v1
def next: ListNode[Int] = _nt
def next_=( newNext:ListNode[Int] ) = { _nt = newNext }
}
scala> val a = ListNode(1,null)
a: ListNode[Int] = ListNode(1,null)
scala> a.next = ListNode(2,null)
a.next: ListNode[Int] = ListNode(2,null)请注意,理想的情况是通过复制完成变异案例类:
scala> a.copy( v1=500 )
res0: ListNode[Int] = ListNode(500,null)此外,如果某些东西可能是null,您可以考虑将其包装在Option中.但我认为这是一个“踢轮胎”的代码,而不是生产代码:-)。
https://stackoverflow.com/questions/34345157
复制相似问题