在scala.collection.immutable.List中将值重新分配给val
我是scala的新手。单击读取列表方法的源代码时,Intellij IDEA会向val发送重新赋值的消息。在在scala.collection.immutable.List中将值重新分配给val,list,scala,List,Scala,我是scala的新手。单击读取列表方法的源代码时,Intellij IDEA会向val发送重新赋值的消息。在readObject方法中,有一行: current.tl = Nil 其中t1是val 那么为什么允许在那里使用这条线呢 scala.collection.immutable.List中的 final case class ::[B](private var hd: B, private[scala] var tl: List[B]) extends List[B] { privat
readObject
方法中,有一行:
current.tl = Nil
其中t1是val
那么为什么允许在那里使用这条线呢 scala.collection.immutable.List中的
final case class ::[B](private var hd: B, private[scala] var tl: List[B]) extends List[B] {
private[scala]var tl:List[B]
-var前面的修饰符tl,这就是为什么可以修改tl。您需要解释这个问题。什么是重新分配的GetSign?在哪里?什么是readObject
?当前值可能是val而不是t1。只是猜测一下。@Jatincurrent.t1=Nil
中的t1
被重新分配t1
是scala.collection.immutable包的final case类::[B]
中的valreadObject
是从scala.collection.immutable.List中的第361行定义的私有方法。Scala版本是2.10.x为什么您认为current.tl
的类型是val
,而不是var
?类最终案例类的声明:[B](private-var-hd:B,private[scala]var-tl:List[B])扩展了List[B]
似乎证明了这一点。不确定为什么IntelliJ中会显示错误,但我尝试在代码中使用类似的结构,没有发现任何错误。@Norbert Radyk刚刚发现,t1
是scala源代码github中的一个变量,而在IntelliJ中,按control并单击t1
将显示t1
是val最终案例类::[B](private val hd:B,private[scala]val tl:scala.collection.immutable.List[B])
。它仍然无法解释IntelliJ在第368行和第372行显示“重新分配到val”错误的原因。IDE问题?@Yury感谢您的回答。