Skip to main content
 首页 » 编程设计

scala之模式匹配 `@` 符号

2024年02月27日39mate10pro

鉴于此 Person 案例类:

scala> case class Person(name: String, age: Int) {} 
defined class Person 

...还有这个实例

scala> val b = Person("Kevin", 100) 
b: Person = Person(Kevin,100) 

是否有理由选择此代码(带有 @)

scala> b match { 
     |    case p @ Person(_, age) => println("age") 
     |    case _ => println("none") 
     | } 
age 

...关于以下内容?

scala> b match { 
     |    case Person(_, age) => println("age") 
     |    case _ => println("none") 
     | } 
age 

也许我缺少@的含义/力量?

请您参考如下方法:

只有当您还想处理对象本身时,才包含@。因此:

that match{ 
  case p @ Person(_, age) if p != bill => age 
  case Person(_, age) => age - 15 
  case _ => println("Not a person") 
} 

否则,包含它就没有意义。