【问题标题】:Scala: pattern matching on a type with a given "path"?Scala:对具有给定“路径”的类型进行模式匹配?
【发布时间】:2017-11-29 05:41:24
【问题描述】:

假设我有:

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(类内的嵌套类型)

  4. myObj21,仅限myObj22。 (aClass/aClass 内的双重嵌套类型)

  5. myClass111myClass121。 (不同分支中的嵌套类型,但嵌套级别和“根”相同)

即。对象/类的不同变体以及相同的级别类型或相同的子级别类型。

我可以使用等效的“正则表达式”类型而不是显式拼写类型路径吗?

【问题讨论】:

  • @negative votes:我不明白这个问题太宽泛了。也许您可以阅读这个问题?
  • 我知道。我只提到了正则表达式来说明我想要做什么! :)

标签: scala types pattern-matching classpath


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-23
    • 2013-04-10
    • 1970-01-01
    • 2016-04-02
    • 2020-08-09
    • 2016-03-10
    • 1970-01-01
    • 2019-03-29
    相关资源
    最近更新 更多