在case语句中Scala未声明的变量

luc*_*uke 1 scala

我找到了下面的代码.

val carType = "SUV"

val space = carType match{

case car if(car.contains("SUV") || car.contains("sports")) => "limited"
case "sedan" => "family car"
case _ => "vehicle"
}

println(s"4 Space of $carType is $space")
Run Code Online (Sandbox Code Playgroud)

在第一个案例陈述中试图理解"汽车"这个词的来源?它是变量吗?如果是这样,它没有被宣布也没有初始化?有人可以澄清一下吗?

Kev*_*son 5

为了在限定if语句中使用它,它与匹配值绑定.第一种情况是它包含SUV或运动,但它与第二种情况("轿车")不完全匹配.你需要一些东西叫'包含',这里是'汽车'.

您可以将其更改为x或其他任何内容,它的行为也相同.

if语句称为"后卫".https://docs.scala-lang.org/tour/pattern-matching.html