与未定义参数数量匹配的Scala模式
问题描述:
我正在开发scala中的字符串分析器。我面临的问题是我不需要总是匹配相同数量的参数。与未定义参数数量匹配的Scala模式
更清楚,我的代码如下:
line match {
case regex(first, second, third, ...) => // sometimes 2 arguments, sometimes more
// do stuff
case _ =>
println("Wrong parsing")
}
正如你所看到的,我需要动态定义我的论点。你有想法做到这一点?我试图使用一个列表,但我没有成功。
PS:我正则表达式是动态生成
UPDATE:感谢sheunis的回答我找到了解决办法。
line match {
case regex(args @ _*) =>
println(args(0))
println(args(1))
println(args(2))
... // as much as you have
case _ => println("Wrong parsing")
}
答
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")
}
谢谢您的回答。这实际上并不完美,因为我想匹配一个String(一个日志),而在这里它将一个数组与一个数组进行比较。 – ImbaBalboa
终于受到你答案的启发。有用 ;) – ImbaBalboa