我正在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")
}
答案 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")
}