【问题标题】:Scala guarded pattern with or matchingScala 保护模式与或匹配
【发布时间】:2012-04-16 09:05:01
【问题描述】:

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

    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"))
    

    【讨论】:

      猜你喜欢
      • 2015-01-04
      • 2021-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-17
      • 2021-12-17
      • 2011-04-16
      • 1970-01-01
      相关资源
      最近更新 更多