更好的方法来检查模式是否匹配(不是正则表达式)

时间:2014-04-09 03:02:26

标签: scala

我希望模式匹配与否。

我最终写了一段像这样的可怕代码

val isMatch = something match { 
    case Some(Complex(Pattern(matching) :: Nil)) => true
    case _ => false
}

这对我来说就像这样做

val isConditionTrue = if (someCondition) {
  true 
} else { 
  false 
}

这是一个眼睛疼痛,当然可以减少到这个

val isConditionTrue = someCondition

或者只是

someCondition

但我找不到一种方法(也许我错过了一些愚蠢的东西)来做一个模式匹配(再次,不是在这里谈论正则表达式,只是很好的旧Scala模式匹配

这里有关于Partial Function / isDefinedAt等的事情吗?是否有任何实用方法来检查,例如

之类的东西
isPatternMatching(object, Pattern)

1 个答案:

答案 0 :(得分:2)

有一个答案,@ emtempore抱怨没有人提供这个作为答案:

scala> import PartialFunction._
import PartialFunction._

scala> cond(Some(1)) { case Some(i) if i > 0 => true }
res0: Boolean = true

更新

实际上很容易找到,因为这是他最受欢迎的答案。

https://stackoverflow.com/a/4442273/1296806

这是Scala商店中“令人印象深刻的”连帽衫的来源。