scala learning – 5

Extractor

把原文[email protected]带入匹配项EMail的unapply方法的参数str, 如果返回None则不匹配, 否则匹配

object EMail {
    def unapply(str:String) :Option[(String,String)] ={
        println("i am unapply")
        val parts = str split "@"
        if(parts.length==2) Some(parts(0),parts(1)) else None
    }
}

"[email protected]" match{
    case Email(u) => println("user is " + u)
    case _ => println("error")
}

i am unapply
user is aa mail is cc.com