2017-04-25 8 views
0

私はスカラーで文字列パーサーを開発中です。私は常に同じ数のパラメータに一致する必要はない問題に直面しています。定義されていない数のパラメータと一致するスカラパターン

、次のように自分のコードをより明確にするために:あなたが見ることができるように

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

     // do stuff 

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

、私は動的に私の引数を定義する必要があります。これを達成するアイデアはありますか?私はリストを使用しようとしましたが、私は成功しませんでした。

PS:sheunis'答えのおかげで、私は解決策を見つけた:私の正規表現を動的に

UPDATEが生成されます。あなたの答えのための

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

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

    case _ => println("Wrong parsing") 

} 

答えて

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") 
} 
+0

感謝。これは実際には完全には動作しません。なぜなら、ここでは配列と配列を比較するのに対し、String(ログ)に一致させたいからです。 – ImbaBalboa

+0

最後にあなたの答えに触発されました。できます ;) – ImbaBalboa

関連する問題