(模式)匹配Scala中的字符串[重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(模式)匹配Scala中的字符串[重复]相关的知识,希望对你有一定的参考价值。

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

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 =>...我的代码无法访问。为什么我的方法不起作用?我如何“匹配”字符串?

答案

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

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

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

以上是关于(模式)匹配Scala中的字符串[重复]的主要内容,如果未能解决你的问题,请参考以下文章

第3节 Scala中的模式匹配:1 - 5

scala范围和模式匹配[重复]

Scala快速入门--模式匹配

检查列表中的偶数,并在 Scala 中获得类型不匹配 [重复]

Scala 中的模式匹配是如何在字节码级别实现的?

模式匹配范围在Scala与Spark udf