在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
为什么这种演员需要?在任何情况下(包括模式匹配),字符串的行为应该不像Seq [Char]?但是,如果没有这种转换,代码片段将不起作用。
这使得很多的意义,基本上是我一直在猜测。但是,我没有找到隐式转换器。感谢您指出。所以基本上,这是Java互操作性的一个重要让步,牺牲了某种类型的健全性。 – 2009-04-11 19:12:23
没有类型的健全性丢失。隐式转换只是插入函数调用的编译器,类似于val z:Seq [Char] = string2Seq(x) – 2009-04-11 23:57:41