E212: Only Fully Dependent Applied Constructor Type
E212: Only Fully Dependent Applied Constructor Type
이 경고는 첫 번째 파라미터 목록의 모든 파라미터가 tracked로 표시되지 않은 클래스에 적용된 생성자 타입(applied constructor type, 즉 생성자 인자를 포함하는 타입)을 사용할 때 발생해요.
본문
적용된 생성자 타입은 생성자 인자를 타입 자체에 포함시켜 더 정밀한 타입을 표현할 수 있게 해 주는 실험적 기능이에요. 하지만 이 기능은 첫 번째 파라미터 목록의 모든 파라미터가 tracked일 때, 즉 그 값들이 타입의 일부가 될 때만 제대로 동작해요.
예시 (Example)
import scala.language.experimental.modularity
class MyBox(val value: Int)
def example =
val box: MyBox(42) = MyBox(42)
box
에러 (Error)
-- [E212] Type Warning: example.scala:6:11 -------------------------------------
6 | val box: MyBox(42) = MyBox(42)
| ^^^^^^^^^
|Applied constructor type can only be used with classes where all parameters in the first parameter list are tracked
해결 방법 (Solution)
적용된 생성자 타입을 쓸 수 있도록 클래스 파라미터를 tracked로 표시해요.
import scala.language.experimental.modularity
class MyBox(tracked val value: Int)
def example =
val box: MyBox(42) = MyBox(42)
box
대안으로, 정밀한 타입 추적이 필요 없다면 적용된 생성자 타입 문법을 제거해요.
import scala.language.experimental.modularity
class MyBox(val value: Int)
def example =
val box: MyBox = MyBox(42)
box