(模式)匹配Scala中的字符串

时间:2017-12-16 12:55:15

标签: string scala pattern-matching

我想将给定字符串与给定的其他字符串集进行比较。我没有使用一系列if,而是采用了更简洁的模式匹配方式,直观地写道:

val s = "match"

val s1 = "not match"
val s2 = "not really a match"
val s3 = "match"

s match {
  case s1 => println("Incorrect match 1")
  case s2 => println("Incorrect match 2")
  case s3 => println("Match")
  case _ => println("Another incorrect match")
}

令我惊讶的是,结果是:

Incorrect match 1

我的编译器警告超出case s2 =>...我的代码无法访问。为什么我的方法不起作用?我如何“匹配”字符串?

1 个答案:

答案 0 :(得分:2)

这个小写变量模式匹配 Scala ,它会被认为是新的临时变量。导致您的代码输出Incorrect match 1。因此,您可以使用identifier对变量进行编码以匹配其值,例如:

  s match {
    case `s1` => println("Incorrect match 1")
    case `s2` => println("Incorrect match 2")
    case `s3` => println("Match") 

或者您可以将变量名称更新为大写,例如:S1S2S3