首页 > scala中模式匹配中的@代表什么意思

scala中模式匹配中的@代表什么意思

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)
}

  1. @是为模式匹配起了个变量名

  2. variableName @ pattern的写法

  3. 解决场景
    case list: List[_] => .... // compile ok

case list: List(1, _*) => .... //compile wrong
取而代之的写法是
case list @ List(1, _*) => .... //compile ok

【热门文章】
【热门文章】