我希望模式匹配与否。
我最终写了一段像这样的可怕代码
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)
答案 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商店中“令人印象深刻的”连帽衫的来源。