Referring to the type of an inner class in Scala

前端 未结 3 2095
攒了一身酷
攒了一身酷 2020-12-01 21:13

The following code tries to mimic Polymorphic Embedding of DSLs: rather than giving the behavior in Inner, it is encoded in the useInner method of

3条回答
  •  天命终不由人
    2020-12-01 21:55

    The problem is as you describe, that useInner is expecting an Inner of a specific Outer instance. Since enclosing returns a generic Outer, there is really no way to tie both together that I know of.

    You can force it, however:

    def toBoolean(x: Outer#Inner): Boolean = {
      val outer = x.enclosing
      outer.useInner(x.asInstanceOf[outer.Inner])
    }
    

提交回复
热议问题