代码之家  ›  专栏  ›  技术社区  ›  Val

引用asInstanceOf中的嵌套类

  •  4
  • Val  · 技术社区  · 11 年前

    我得到了 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
        }
    

    在此添加一些细节以提高问题质量。正式的质量检查不会出错。如果更多的字母能改善你的问题,那肯定是这样。现在,我的问题好多了,可以发布了。

    1 回复  |  直到 11 年前
        1
  •  5
  •   Ben Reich    11 年前

    您可能正在寻找:

    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 .