Scala:具有给定“路径”的类型的模式匹配?

时间:2017-06-26 11:32:48

标签: scala types pattern-matching classpath

让我说我有:

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. 仅限
  4. myClass2(类中的嵌套类型)

  5. 仅限
  6. myObj21myObj22。 (aClass/aClass

  7. 中的双重嵌套类型
  8. myClass111myClass121。 (嵌套类型在不同的分支中但具有相同的嵌套级别和相同的“根”)

  9. 即。对象/类和相同级别类型或相同子级类型的不同变体。

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

1 个答案:

答案 0 :(得分:1)

不,没有好办法做到这一点。嵌套类型上的模式匹配完全不合适,更不用说关于它们的复杂匹配。

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