В Scala можно сформулировать шаблоны, основанные на невидимых символах строки, рассматривая его как Seq [ Char].
Пример этой функции упоминается в Прогулка по 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
}
}
}
Проблема с этим - это третья строка фрагмента:
val z: Seq[Char] = x
Почему этот вид приведения необходим? Не должна ли String вести себя как Seq [ Char] при всех обстоятельствах (что будет включать сопоставление шаблонов)? Однако без этого преобразования фрагмент кода не будет работать.