scala 随笔(7)unapply 解析

来源:互联网 发布:python 绝顶黑客 编辑:程序博客网 时间:2024/06/04 18:05


apply he unapply 都是放在object 半生类里面。
apply 可以用来new对象,
unapply能够解析对象。一般与match 联合使用
class UnapplyTest (var x :String ,var y :Int) {}object UnapplyTest {  def apply(x:String): UnapplyTest ={    val array =  x.split(":")    require(array.length==2)    new UnapplyTest(array(0).toString,array(1).toInt)  }  def unapply(unapplyTest: String): Option[(String,Int)]={    val array =  unapplyTest.split(":")    Some(array(0).toString,array(1).toInt)  }  def main(args: Array[String]): Unit = {    val unapplyTest = UnapplyTest("localhost:8080")    println(unapplyTest.x+":" + unapplyTest.y)    var test  = "localhost:8080"    test match {      case UnapplyTest("localhost",8080) => print("I am here")    }  }}

test 是String类型,本身是无法匹配UnapplyTest 类型的。
应为在unapply里面定义里,
在这里会先将String,调用unapply 然后与输出的option 比较。

输出:
localhost:8080
I am here
Process finished with exit code 0










原创粉丝点击