Referring to the type of an inner class in Scala
        Posted  
        
            by saucisson
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by saucisson
        
        
        
        Published on 2010-02-02T12:30:59Z
        Indexed on 
            2010/04/10
            13:43 UTC
        
        
        Read the original article
        Hit count: 404
        
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 its enclosing class. I added the enclosing method so that user has only to keep a reference to Inner instances, but can always get their enclosing instance. By doing this, all Inner instances from a specific Outer instance are bound to only one behavior (but it is wanted here).
abstract class Outer {
  sealed class Inner {
    def enclosing = Outer.this
  }
 def useInner(x:Inner) : Boolean
}
def toBoolean(x:Outer#Inner) : Boolean = x.enclosing.useInner(x)
It does not compile and scala 2.8 complains about:
type mismatch; found: sandbox.Outer#Inner
               required: _81.Inner where val _81:sandbox.Outer
From Programming Scala: Nested classes and A Tour of Scala: Inner Classes, it seems to me that the problem is that useInnerexpects as argument an Inner instance from a specific Outer instance.
What is the true explanation and how to solve this problem ?
© Stack Overflow or respective owner