在 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
}
}
}
我遇到的问题是代码片段的第三行:
val z: Seq[Char] = x
为什么需要这种 Actor 阵容?在所有情况下(包括模式匹配),字符串不应该像 Seq[Char] 一样吗?但是,如果没有这种转换,代码片段将无法工作。
最佳答案
不能 100% 确定这是否正确,但我的直觉是,如果没有这个明确的强制转换,您将与 java.lang.String
进行模式匹配。 ,这不是您想要的。
显式转换强制 Scala 编译器使用 Predef.stringWrapper
隐式转换;因此,如 RichString扩展 Seq[Char]
,您可以进行模式匹配,就好像字符串是一个字符序列一样。
关于scala - 将字符串匹配为 Seq[Char] 的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/740563/