2016-08-03 5 views
0

パターンマッチングを使用して複数の変数を取得するにはどうすればよいですか?たとえば

List(1,2,3,4) match { 
    case List(x: Int, y: Int, *rest) => 
    println(rest) // i want to get List(3,4) 
} 

_*試合複数の変数ことができますが、キャプチャそれらのことができるようにように見えるために行います。

ありがとうございます!

+1

'リスト(1,2,3,4)一致{ケースを抽出

val List(x,y,rest @ _*) = List(1,2,3,4) 

ele1 :: ele2 ::休止= > {}} ' –

答えて

4

あなたはこのためにrest @ _*を使用することができます。これは一般的であることを

List(1,2,3,4) match { 
    case List(x: Int, y: Int, rest @ _*) => 
    println(rest) 
} 

注:あなたが与えることx @ patternを使用することができますxpatternと一致する任意の値に設定します(ただし、この値には適切な型があります)。 http://scala-lang.org/files/archive/spec/2.11/08-pattern-matching.html#pattern-bindersを参照してください。

2
List(1, 2, 3, 4) match { 
    case _ :: _ :: tail => println(tail) // prints List(3, 4) 
} 
2

あなたは、単に短所演算子でリストを一致させることができます。

List(1, 2, 3, 4) match { 
    case x :: y :: rest => println(rest) 
} // gives you "List(3, 4)" to stdout 
+0

でもそれを行うには良い方法です。ありがとう! –

1

リスト上のパターンマッチングを起動する別の方法は、

x: Int = 1 
y: Int = 2 
rest: Seq[Int] = List(3, 4) 
関連する問題