콘텐츠로 이동

2025 03 06

2025-03-05

Scala inner class

class Outer {
    case class Inner(x: Int)
}
  • Scala의 inner case class는 외부 Outer class 인스턴스에 종속되는 path-dependent type 임
    class Outer {
        case class Inner(x: Int)
    }
    
    val out1 = new Outer
    val out2 = new Outer
    
    var out1inner = out1.Inner(1)
    val out2inner = out2.Inner(2)
    
    println(out1)
    println(out2)
    println(out1inner)
    println(out2inner)
    
    out1inner = out2inner // 에러. 이렇게 대입 못함
    

Scala inner case class를 반환할 때 발생할 수 있는 문제

  • [Layer 구조]
    • Controller
    • WebService
    • Service
      • inner case class X
  • 각각이 DI를 기본적으로 하게 되면, 파라미터는 클래스 내부에서만 사용한 매개변수로 처리되어 외부 접근 X
  • Controller에서 X를 반환하게 하려면
    • WebService @Inject()(val service: Service) 와 같이 val로 public하게 해당 인스턴스 접근을 열어주거나
    • X 자체를 Service 밖으로 빼내기