Scala模式与未定义数量的参数匹配

时间:2017-04-25 15:28:18

标签: regex scala parsing

我正在scala中开发一个字符串解析器。我面临一个问题,我不需要总是匹配相同数量的参数。

更清楚一点,我的代码如下:

line match {
  case regex(first, second, third, ...) => // sometimes 2 arguments, sometimes more

        // do stuff

  case _ =>
        println("Wrong parsing")
}

如您所见,我需要动态定义我的参数。你有想法实现这个目标吗?我试图使用列表,但我没有成功。

PS:我的正则表达式是动态生成的

更新:感谢sheunis的回答,我找到了解决方案。

line match {
  case regex(args @ _*) => 

   println(args(0))
   println(args(1))
   println(args(2))
   ... // as much as you have

  case _ => println("Wrong parsing")

}

1 个答案:

答案 0 :(得分:1)

case class Regex(args: String*)

val test = Regex("a", "b", "c")

test match {
    case Regex(args @ _*) => for (arg <- args) println(arg)

    case _ => println("Wrong parsing")
}