Хорошо, с помощью ответа @ venechka , я думаю, что я понял это.
Для обычных классов, Scala выводит и пустой список параметров, либо в объявлении класса (class B
), либо в точке создания класса (new A
и new B
):
scala> class A()
defined class A
scala> new A
res19: A = A@12cdd20
scala> new A()
res20: A = A@1c37b8f
scala> class B
defined class B
scala> new B
res21: B = B@12801c5
scala> new B()
res22: B = B@79a340
Таким образом, чтобы соответствовать этому принципу, он выводит пустой список параметров перед неявным списком параметров (class D(implicit ...)
).
scala> class C()(implicit a: Int = 0)
defined class C
scala> new C
res23: C = C@9d1714
scala> new C()
res24: C = C@b38dba
scala> new C()(0)
res25: C = C@1677979
scala> class D(implicit a: Int = 0)
defined class D
scala> new D
res26: D = D@1a0d111
scala> new D()
res27: D = D@14e3372
scala> new D()(0)
res28: D = D@1609872