在 Scala 的构造函数上重新分配一个 var 参数



object ReassignTest extends App {
  class X(var i : Int)
  def x = new X(10)
  x.i = 20  // this line compiles
  println(x.i)  // this prints out 10 instead of 20, why?
}

那么我将如何为参数i创建一个资源库

您将x定义为每次"调用"它时都会返回新X的方法。

def x = new X(10) //define a function 'x' which returns a new 'X'
x.i = 20  //create a new X and set i to 20
println(x.i) //create a new X and print the value of i (10)

改为将x定义为值,行为将符合您的预期

val x = new X(10) //define a value 'x' which is equal to a new 'X'
x.i = 20  //set 'i' to be to 20 on the value 'x' defined above 
println(x.i) //print the current value of the variable i defined on the value 'x'

最新更新