Два набора параметров конструктора в классе scala - PullRequest
10 голосов
/ 28 июля 2010

Что делает этот код?Почему существует два набора параметров конструктора?

class A(val x: Int)(val y: Int)

Я могу инициализировать объект и использовать оба поля:

val a = new A(5)(7)
println(a.x + ", " + a.y)

Если я сделаю это классом случая, я могу сопоставить толькопервый набор параметров.

case class A(x: Int)(y: Int)
val a = A(5)(7)
a match {
  A(x) => println(x)
}

Невозможно создать 3 набора параметров.Это не компилируется.Так в чем же смысл двух наборов параметров конструктора?

1 Ответ

7 голосов
/ 28 июля 2010

Согласно спецификации scala (см. Раздел 5.3), второй набор параметров предназначен для неявных параметров. Разделение параметров на два набора позволяет вам определять только неявный paameter, а другой может быть определен контекстуально.

Довольно странно, что компилятор принимает неявные параметры во втором наборе.

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