相关疑难解决方法(0)

参考Scala中内部类的类型

下面的代码试图模仿DSL的多态嵌入:它不是给出行为Inner,而是在useInner其封闭类的方法中编码.我添加了enclosing方法,以便用户只需保留对Inner实例的引用,但始终可以获取其封闭的实例.通过这样做,Inner来自特定Outer实例的所有实例仅绑定到一个行为(但这里需要它).

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)
Run Code Online (Sandbox Code Playgroud)

它没有编译和scala 2.8抱怨:

type mismatch; found: sandbox.Outer#Inner
               required: _81.Inner where val _81:sandbox.Outer
Run Code Online (Sandbox Code Playgroud)

Scala编程:嵌套类Scala:Inner Classes之旅,在我看来,问题是useInner期望作为参数Inner来自特定Outer实例的实例.

什么是真正的解释以及如何解决这个问题?

types scala inner-classes

13
推荐指数
1
解决办法
7225
查看次数

标签 统计

inner-classes ×1

scala ×1

types ×1