Scala:在给定 "path" 的类型上进行模式匹配?

Scala: pattern matching on a type with a given "path"?

假设我有:

object myObject{
  class myClass1(){
      class myClass11(){
        class myClass111
      }
      class myClass12(){
        class myClass121
      }
    }
}

class myClass{
  class myClass2(){
      object myObj21
      object myObj22
   }
}

我想对上面介绍的类型和对象进行模式匹配并获取实例:

  1. myClass1(对象内的嵌套类型)
  2. myClass11myClass12aObject/aClass 中的双重嵌套类型)

  3. myClass2(class 中的嵌套类型)

  4. myObj21 , myObj22 而已。 (aClass/aClass 中的双重嵌套类型)

  5. myClass111,myClass121。 (不同分支中的嵌套类型但嵌套级别相同且相同"root")

即。 object/class 和相同级别类型或相同子级别类型的不同变体。

我可以使用 "regex" 等效类型而不是明确拼写类型路径吗?

不,没有好的方法可以做到这一点。嵌套类型的模式匹配完全是不确定的,更不用说关于它们的复杂匹配了。

您也许可以编写一些自定义的 unapply 来使用反射或什至是宏来执行此类操作。但是想想那个兔子洞让我想知道为什么这首先是必要的。也许你可以添加一些特征来代表你关心的实际行为,并在这些特征上进行模式匹配?