我有

val str = "abc:def"
val pattern = "(.*):.*".r
val prefix = str match {
  case pattern(prefix) => prefix
  case _ => ""
}

我想避免MatchError,所以如果匹配,我将返回匹配,否则将返回“”。这会编译并提取“prefix =“abc”。但是我收到警告说

可变图案的可疑阴影

IDE建议在模式(`prefix`)前后加上``。

有更好的方法吗? IDE为什么建议该解决方案。

最佳答案

IDE会显示警告,因为您有两个具有相同名称的变量,我建议将内部变量重命名为不同的名称:

val prefix = str match {
  case pattern(pref) => pref
  case _ => ""
}

在这种情况下,建议不是您想要的,如果要与变量的值进行匹配,则可以使用该建议(IDE认为您想要这样做,因为prefix是现有变量的名称)。

关于regex - 使用正则表达式提取String的一部分并将其分配给变量scala,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43005483/

10-13 05:09