有没有办法像这样匹配scala中的字符串:
def matcher(arg: String) : Expr = {
case left :: '*' :: right => new Binary("*", left, right)
case left :: '+' :: right => new Binary("+", left, right)
}
哪里的 left 和 right 是 String 类型?
最佳答案
您可以通过匹配正则表达式来实现您的目标。
trait Expr
case class Binary(op: String, leftOperand: String, rightOperand: String) extends Expr
val mulPattern = "(\\d*)\\*(\\d*)".r
val addPattern = "(\\d*)\\+(\\d*)".r
def matcher(arg: String) : Expr = {
arg match {
case mulPattern(left, right) => new Binary("*", left, right)
case addPattern(left, right) => new Binary("+", left, right)
}
}
def main(args: Array[String]): Unit = {
println(matcher("1+2")) // Binary("+", "1", "2")
println(matcher("3*4")) // Binary("*", "3", "4")
}
关于string - Scala、模式匹配、字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33053646/