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