【问题标题】:Pattern matching without case classes没有案例类的模式匹配
【发布时间】:2013-11-28 23:12:56
【问题描述】:

是否可以通过模式匹配来检测非案例类的子类型?

我需要使用现有的 Java 类,所以我不能声明自己的案例类。

【问题讨论】:

    标签: scala types pattern-matching case-class


    【解决方案1】:

    是的!您可以在类型上进行模式匹配,因此如果您对不同的子类型有不同的情况,您可以获得您正在寻找的行为:

    trait A
    class B extends A
    class C extends A
    
    def f(a: A) = a match {
      case b: B => "a B!"
      case c: C => "a C!" 
    }
    
    f(new B)  // a B!
    f(new C)  // a C!
    

    【讨论】:

    • 看起来不错,谢谢!多亏了你,我发现它被称为“类型匹配”或 typecase - 还有更多信息here
    • 另外,值得知道A 可以是Object(或Any
    猜你喜欢
    • 2017-02-25
    • 2012-01-02
    • 1970-01-01
    • 2019-05-03
    • 2017-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-19
    相关资源
    最近更新 更多