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)
}
阅读 4.4k
1 个回答
  1. @是为模式匹配起了个变量名

  2. variableName @ pattern的写法

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进