Scalaでは、文字列の非正規文字に基づくパターンをSeq [Char]として扱うことができます。文字列に一致するパターンSeq [Char]
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行目である:
この機能の例は、これが使用される例のコードであるA Tour of Scala
に記載されています:
val z: Seq[Char] = x
なぜこの種のキャストが必要ですか?すべての状況(パターンマッチングを含む)で文字列がSeq [Char]のように振る舞うべきではありませんか?ただし、この変換がなければ、コードスニペットは機能しません。
これはかなり意味があり、基本的に私が推測していたものです。しかし、暗黙のコンバータは見つかりませんでした。それを指摘してくれてありがとう。 基本的に、これはJavaの相互運用性に対する大きな譲歩であり、いくつかのタイプの健全性を犠牲にしています。 –
タイプの健全性が失われません。暗黙の変換は、関数呼び出しをコンパイラに挿入するだけです。val:Seq [Char] = string2Seq(x) –