Переназначение параметра var в конструкторе Scala - PullRequest
2 голосов
/ 02 апреля 2012

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

1 Ответ

13 голосов
/ 02 апреля 2012

Вы определили 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'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...