Scala では、文字列を Seq[Char] として扱うことにより、文字列の個々の文字に基づいてパターンを定式化することができます。
この機能の例は、A Tour of Scalaに記載されています。
これはそこで使用されるコード例です:
object RegExpTest1 extends Application {
def containsScala(x: String): Boolean = {
val z: Seq[Char] = x
z match {
case Seq('s','c','a','l','a', rest @ _*) =>
println("rest is "+rest)
true
case Seq(_*) =>
false
}
}
}
これに関する問題は、スニペットの 3 行目です。
val z: Seq[Char] = x
なぜこの種のキャストが必要なのですか?String は、すべての状況 (パターン マッチングを含む) で Seq[Char] のように振る舞うべきではありませんか? ただし、この変換がないと、コード スニペットは機能しません。