Case语句中的Scala未声明变量

时间:2018-12-28 02:33:35

标签: 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")

试图理解第一个案件陈述中“汽车”一词的来源?它是变量吗?如果是这样,它在哪里都没有声明或初始化?有人可以澄清吗?

1 个答案:

答案 0 :(得分:5)

为了在限定条件if语句中使用它,它绑定到匹配值。第一种情况是当它包含SUV或运动时,但与第二种情况(“轿车”)并不完全匹配。您需要将其包含在“容器”中,这里是“汽车”。

您可以将其更改为x或其他任何东西,并且行为相同。

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