首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >scala: value不是ListNode[Int]的成员

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

Stack Overflow用户
提问于 2015-12-17 22:06:19
回答 3查看 277关注 0票数 0

我再说一遍,如果这个问题对你来说很愚蠢的话,欢迎新手来斯卡拉投票.

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

代码语言:javascript
复制
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
         ^

我读过thisthisthisthisthis,但仍然不太明白它的意思.

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

非常感谢。

EN

Stack Overflow用户

回答已采纳

发布于 2015-12-17 22:22:26

这是因为您使用的是def,这是一个函数。您可能需要使用vars定义case类。

下面的代码可以工作,但您可能需要重新考虑可变案例类的整个概念。

代码语言:javascript
复制
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)

请注意,理想的情况是通过复制完成变异案例类:

代码语言:javascript
复制
scala> a.copy( v1=500 )
res0: ListNode[Int] = ListNode(500,null)

此外,如果某些东西可能是null,您可以考虑将其包装在Option中.但我认为这是一个“踢轮胎”的代码,而不是生产代码:-)。

票数 1
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34345157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档