我正在尝试理解scala unapply方法。
下面是我的理解。假设我有一个Person对象:
class Person(val fname: String, val lname: String)
object Person{
def unapply(x: Person) : Option[(String, String)] =
Some(x.fname,x.lname)
}
new Person("Magic", "Mike") match {
case Person(x, y) => s"Last Name is ${y}"
case _ => "Unknown"
}我猜想这个案例需要类似的东西:
val temp = Person.unapply(new Person("Magic", "Mike"))
if (temp != None) { val (x, y) = temp.get }
else { <go to next case> }但是当我像下面这样的时候,下面的取消应用是如何工作的呢?
new Person("Magic", "Mike") match {
case Person("Harold", y) => s"Last Name is ${y}"
case Person("Magic", y) => s"Last Name is ${y}"
case _ => "Unknown"
}它如何访问unapply方法中fname("Magic")的值,并给出与第一个相同/正确的结果?
https://stackoverflow.com/questions/41334239
复制相似问题