scala中模式匹配中的@代表什么意思,@除了在这里在其他还有用到的地方吗
abstract class A; // sealed abstract class A
case class B(a:Int) extends A;
case class C(a:Int) extends A;
case class D(a:Int) extends A;
val a:A = B(1);
a match {
case e @ B(_) => println(e)
case e @ C(_) => println(e)
}
@是为模式匹配起了个变量名
variableName @ pattern
的写法解决场景
case list: List[_] => ....
// compile okcase list: List(1, _*) => ....
//compile wrong取而代之的写法是
case list @ List(1, _*) => ....
//compile ok