Как называется этот синтаксис Scala: новый C {i = 5} // есть блок после нового - PullRequest
2 голосов
/ 12 сентября 2011

Я встречал этот синтаксис в чужом коде Scala и не помню, чтобы читал об этом:

val c  = new C { i = 5 }

Похоже, что блок после нового C эквивалентен:

val c = new C
c.i = 5

в предположении определения класса, например:

class C {
  var ii = 1
  def i_=(v: Int) { ii = v }
  def i = ii
}

Как называется этот синтаксис в Scala?Я хочу прочитать об этом больше, но не могу найти его описанным в Программирование в Scala или в другом месте.

1 Ответ

9 голосов
/ 12 сентября 2011

Вы создаете экземпляр анонимного подкласса из C.

Это , а не эквивалентно коду, который вы показали - попробуйте вызвать getClass в двух экземплярах, названных c в ваших фрагментах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...