4 casting scala nested-class inner-classes
我正进入(状态 not found: value Duck
    class Type
    class Value(val t: Type)
    class Duck extends Type {
        class Val extends Value(this)
    }
    def f(individual: Value) = individual.t match {
        // case t: Duck => individual.asInstanceOf[Value] //this is ok
         case t: Duck => individual.asInstanceOf[Duck.Val] //but I need this
    }
在这里添加一些细节以提高问题质量。正式的质量检查不会出错。如果更多的字母改善了你的问题,那就一定是这种情况。现在,我的问题好多了,可以发布了。
你可能正在寻找这个:
def f(individual: Value) = individual.t match {
     case t: Duck => individual.asInstanceOf[t.Val] 
}
或这个:
def f(individual: Value) = individual.t match {
     case t: Duck => individual.asInstanceOf[Duck#Val]
}
在 Scala 中,为外部类的每个实例定义了一个内部类型。因此,您要查找的类型是t.Val,因为您必须提供外部类实例才能完全了解内部类类型。如果你想获得所有这些内部类型的超类型,你可以做Outer#Inner.
| 归档时间: | 
 | 
| 查看次数: | 124 次 | 
| 最近记录: |