Вы определили 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'