【发布时间】:2013-11-28 23:12:56
【问题描述】:
是否可以通过模式匹配来检测非案例类的子类型?
我需要使用现有的 Java 类,所以我不能声明自己的案例类。
【问题讨论】:
标签: scala types pattern-matching case-class
是否可以通过模式匹配来检测非案例类的子类型?
我需要使用现有的 Java 类,所以我不能声明自己的案例类。
【问题讨论】:
标签: scala types pattern-matching case-class
是的!您可以在类型上进行模式匹配,因此如果您对不同的子类型有不同的情况,您可以获得您正在寻找的行为:
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!
【讨论】:
A 可以是Object(或Any)