与未定义参数数量匹配的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") 
} 
+0

谢谢您的回答。这实际上并不完美,因为我想匹配一个String(一个日志),而在这里它将一个数组与一个数组进行比较。 – ImbaBalboa

+0

终于受到你答案的启发。有用 ;) – ImbaBalboa