매개변수화 타입이 인자를 갖지 않음

매개변수화 타입이 인자를 갖지 않음 (Parameterized Type Lacks Arguments)

매개변수화된 타입을 상속하면서 필요한 생성자 인자를 넘기지 않았을 때 나오던 에러예요.

출처: Scala 3 Reference

본문

참고: 이 에러는 Scala 3.2.2에서 더 구체적인 에러 메시지인 E171: Missing Argument로 대체되었어요.

매개변수화된 타입을 상속하면서 필요한 생성자 인자를 넘기지 않으면 이 에러가 발생했어요.

예시

trait Foo(x: Int)

val foo = new Foo {}

에러 메시지

-- [E054] Type Error: example.scala:3:14 ---------------------------------------
3 |val foo = new Foo {}
  |              ^^^
  |              Parameterized trait Foo lacks argument list
  |-----------------------------------------------------------------------------
  | Explanation (enabled by `-explain`)
  |- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  | The trait Foo is declared with non-implicit parameters, you may not leave
  | out the parameter list when extending it.
   -----------------------------------------------------------------------------

설명

클래스나 트레이트가 생성자 매개변수를 선언하면, 그것을 상속할 때 그 매개변수에 대한 값을 반드시 넘겨야 해요. 이 에러는 FooInt 인자를 요구하는데 아무것도 넘기지 않아서 발생했어요.

해결책은 필요한 인자를 넘겨 주는 거예요.

trait Foo(x: Int)

val foo = new Foo(42) {}