2017-09-26 8 views
0

@_*が可変引数リストと一致するとします。私はそれを次のように使用しようとしていますが、コードはコンパイルされていません。Scalaで@ _ *エクストラクタがコンパイルされない

val l= List(1,2,3,4,5) 
l match { 
    case (first +: second +: [email protected]_*) => println("atleast 2 elements in the list") 
} 
+1

あなたの例では、 '@ _ *'を削除するだけで動作します。その使用方法については、こちらをご覧ください。https://stackoverflow.com/a/9229677/7579547 – Shaido

答えて

0

2つの可能な解決策。

が持っているあなたのList()試合List()

case List(first, second, [email protected]_*) => . . . 

またはmatchあなたList()接続されている要素の配列に対する:

case first +: second +: rest => . . . 

いずれかの方法で、secondは、第一に取り込まれます識別子firstとし、 2番目の値はリストから、restは残りの値を含みます。

+0

ありがとうございました。リストはList(...)または(a + :(b +:Nil))の構文を使用して作成されるためですか? @ManuChadha; –

+0

;はい、多かれ少なかれ。 'case'の後に' List() 'を構築できるパターンが続いた場合、' List'コンパニオンオブジェクトの 'unapplySeq()'メソッドが呼び出され、パターンマッチが完了します。 – jwvh

関連する問題