代码之家  ›  专栏  ›  技术社区  ›  user1868607

使用在scala中同一个包的traits中定义的类。

  •  0
  • user1868607  · 技术社区  · 7 年前

    我相信在scala中,我可以使用在我的特性中其他特性中定义的类。如下所示:

    trait A{
      sealed abstract class C
    }
    
    trait B{
      import A.C
      val l: List[C]
    }
    

    但是,我发现A和C都不被识别。

    我做错什么了?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Dmytro Mitin    7 年前

    A C B

    trait A {
      sealed abstract class C
    }
    
    trait B {
      val l: List[A#C]
    }
    

    trait A {
      sealed abstract class C
    }
    
    trait B {
      type C = A#C
      val l: List[C]
    }
    

    trait A {
      sealed abstract class C
    }
    
    val a = new A {}
    
    trait B {
      import a.C
      val l: List[C]
    }
    

    object A {
      sealed abstract class C
    }
    
    trait B {
      import A.C
      val l: List[C]
    }