我可以像这样检查对象 o 是否是 A 或 B 的实例:
o.isInstanceOf[A] || o.isInstanceOf[B]
Run Code Online (Sandbox Code Playgroud)
但如果我有更多的可能性,这会变得丑陋。
有没有办法定义这样的东西:
o.isInstanceOf[A,B,C,D, ...]
Run Code Online (Sandbox Code Playgroud)
或者
o.isInstanceOf(A,B,C,D, ...)
Run Code Online (Sandbox Code Playgroud)
或者
o.isInstanceOf(Set(A,B,C,D, ...))
Run Code Online (Sandbox Code Playgroud)
sealed trait Super
class A extends Super
class B extends Super
class C extends Super
class D extends Super
val unknown: Super = new C
unknown match { case _: A | _: B | _: C => "I'm a super, but not D" }
// I'm a super, but not D
Run Code Online (Sandbox Code Playgroud)