Scala模式匹配和逻辑不匹配

Scala模式匹配和逻辑不匹配,scala,pattern-matching,Scala,Pattern Matching,我有: x match { case a: SomeType => doSomething() case _ => doSomethingElse() } 有没有办法检查“a”不是给定类型的 像这样: x match { case !(a: SomeType) => doSomething() case _ => doSomethingElse() } 编辑:我同意这个问题可能不是很清楚,但我的兴趣主要是逻辑上的,它已经得到了回答。类似这样的问

我有:

 x match { 
  case a: SomeType => doSomething()
  case _ => doSomethingElse()
 }

有没有办法检查“a”不是给定类型的

像这样:

x match { 
  case !(a: SomeType) => doSomething()
  case _ => doSomethingElse()
}
编辑:我同意这个问题可能不是很清楚,但我的兴趣主要是逻辑上的,它已经得到了回答。

类似这样的问题:

x match { 
  case a: if !a.isInstanceOf[MyFirst] => doSomething()
  case b: MySecond => doSomething()
  case _ => doSomethingElse()
}

编辑之后。您需要的与以下内容相同:

x match { 
  case a: SomeType => doSomethingElse()
  case _ => doSomething()
}

!(a:MyFirst)将包括MySecond和另一个案例。这是你需要的吗?就像现在的模式匹配没有意义一样。我同意,我的问题实际上更多的是关于逻辑的,他们不允许它,因为它没有意义。正如我在回答中提到的。检查not与检查您需要的案例和任何其他案例相同。如果您需要此答案,请使用If语句,而不是模式匹配。这是问题的正确答案,也是我希望在代码中永远看不到的内容。它在逻辑上不正确,因为
!a、 isInstanceOf[MyFirst]
将包括
MySecond
,并将包括除
MyFirst
以外的任何其他情况。“是否有方法检查'a'是否不是给定类型?”这可能是一个不在模式匹配中的if语句。@MateuszKubuszok我很快就可以再创建一个帐户来更新您的评论了。