scala> class A(implicit a: Int);
defined class A
scala> class B()(implicit a: Int);
defined class B
scala> new A()(1)
res1: A = [email protected]
scala> new B()(1)
res2: B = [email protected]
scala> new A(1)
<console>:7: error: too many arguments for constructor A: ()(implicit a: Int)A
new A(1)
Почему Scalac вставляет пустой список параметров перед неявным списком параметров, указанным в объявлении класса?
Кажется, это особенность, а не ошибка, судя по комментарию в источниках scalac:
//конвертировать (неявно...) в () (неявный...), если его единственный раздел параметров
Мне любопытно узнать, почему это сделано. Я нахожу это довольно неожиданным.