如何使用Scala RegexParsers避免不详尽的匹配警告

时间:2017-12-28 21:33:44

标签: regex scala

我有这样的事情:

  def numberBrace: Parser[Double] = "{" ~ number ~ "}" ^^ {
    case "{" ~ num ~ "}" => num
    case _               => 0.0
  }

这很干净,但如果我没有" case _"在那里,我得到一个"匹配可能不是详尽的"编译警告。

我有很多这些子句解析器,所以这些小额外的案例_添加了我的代码。他们真的需要在这里,如果没有,我怎么能避免它们?

1 个答案:

答案 0 :(得分:1)

如果你使用RegexParsers'〜>这个问题就消失了和<〜运营商。 a〜> b匹配但不捕获a,然后匹配但捕获b。 b< ~c匹配/捕获b并匹配/不捕获c。所以最初的问题可以这样完成:

  def numberBrace: Parser[Double] = "{" ~> number <~ "}" ^^ { num => num }

匹配但忽略大括号但捕获数字,该数字只是在^^子句中返回。更干净!