我想将给定字符串与给定的其他字符串集进行比较。我没有使用一系列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 =>...
我的代码无法访问。为什么我的方法不起作用?我如何“匹配”字符串?
答案 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")
或者您可以将变量名称更新为大写,例如:S1
,S2
,S3