(または を実装する任意のコレクション) でパターン マッチングを使用する方法に関するこの記事を読んだ後、このコレクションでパターン マッチングをテストしました。Vector
Seq
scala> x // Vector
res38: scala.collection.immutable.Vector[Int] = Vector(1, 2, 3)
scala> x match {
| case y +: ys => println("y: " + "ys: " + ys)
| case Nil => println("empty vector")
| }
<console>:12: error: pattern type is incompatible with expected type;
found : scala.collection.immutable.Nil.type
required: scala.collection.immutable.Vector[Int]
Note: if you intended to match against the class, try `case _: <none>`
case Nil => println("empty vector")
^
dhg
説明する答えは次のとおり+:
です。
object +: {
def unapply[T](s: Seq[T]) =
s.headOption.map(head => (head, s.tail))
}
REPL
私にそれを示しています
scala> Vector[Int]() == Nil
res37: Boolean = true
...では、なぜこのcase Nil
ステートメントを使用できないのVector
ですか?