class B(i:Int) {
var v = new M(i)
class M(i: Int) {
val x = i
println("Creating a new M")
println(s"x = $x")
}
}
val b = new B(1)
val c = new B(2)
b.v = c.v
如何使用c.v更改b中的变量v,为什么我不能这样做?
答案 0 :(得分:3)
您无法执行此类分配的原因是因为M
类不是静态的。与java不同,每个外部类实例都有自己的内部类,因此b.v
和c.v
是不同类型的实例,因此您无法进行简单的分配。
你可以做的是
M
static
醇>
object B {
class M(i: Int) {
val x = i
println("Creating a new M")
println(s"x = $x")
}
}
class B(i:Int) {
import B._
var v = new B.M(i)
}
B
b.v = new b.M(2)
您可以在scala-lang.org
找到有关内部课程的更多信息