【问题标题】:Referring nested class in asInstanceOf在 asInstanceOf 中引用嵌套类
【发布时间】:2015-05-30 22:44:44
【问题描述】:

我收到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
    }

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

【问题讨论】:

    标签: scala casting inner-classes nested-class


    【解决方案1】:

    您可能正在寻找这个:

    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 中,为外部类的每个 instance 定义了一个内部类型。所以您要查找的类型是t.Val,因为您必须提供外部类实例才能完全了解内部类类型。如果您想获得所有此类内部类型的超类型,可以使用Outer#Inner

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-05
      相关资源
      最近更新 更多