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

我需要使用现有的Java类,因此无法声明自己的case类。

最佳答案

是的!您可以在类型上进行模式匹配,因此,如果不同的子类型具有不同的大小写,则可以获得所需的行为:

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!

关于scala - 没有案例类别的模式匹配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20003131/

10-12 23:14