【问题标题】:Scala guarded pattern with or matchingScala 保护模式与或匹配
【发布时间】:2025-12-31 09:25:06
【问题描述】:

我想做一个看起来像这样的模式匹配:

    sinceOp match {
        case  None |Some(lastUpdate) if lastUpdate<= update.time =>

遗憾的是,这不起作用。有什么想法吗?

谢谢

【问题讨论】:

    标签: scala pattern-matching


    【解决方案1】:

    你也可以测试相反的条件:

    sinceOp match {
      case Some(lastUpdate) if lastUpdate > update.time => //...
      case _ => //...
    }
    

    第二种情况包括None 和最后一次更新较小的情况。

    【讨论】:

    • 这绝对是更好的解决方案!
    【解决方案2】:

    或者你可以用函数链替换模式匹配

    sinceOp.filterNot(_ <= update.time).getOrElse(println("if None"))
    

    【讨论】: