Scalaパス依存

820 ワード

パス依存は内部クラスからjava内のすべての内部クラスが同じタイプ(外部クラス)に属しているが、scala内の内部クラスは外部クラスのインスタンスに依存しなければならない.異なる外部クラスのインスタンス、内部クラスは異なる.外部クラスへの依存をパス依存型(path_dependent_type)と呼ぶ.
class Outer {
    private val x = 10
    class Inner {
        private val y = x + 10 //             ,         private  
    }
}
object Path_Dependence {

  def main(args: Array[String]){
    val outer = new Outer //outer  inner、inner2   , Scala ,             
    val inner = new outer.Inner //     ,   java  (outer.new Inner())
    val inner2: outer.Inner = new outer.Inner
    
    val o1 = new Outer
    val o2 = new Outer
    val i: o2.Inner = new o1.Inner //      ,type mismatch;found o1.Inner, required o2.inner
    val i: Outer#Inner = new o1.Inner //o1.Inner Outer#Inner   ,   java,              ,      ,type_projection
        
  }
}