Scala隐式转换之隐式转换函数

来源:互联网 发布:淘宝女装店铺改卖男装 编辑:程序博客网 时间:2024/05/21 07:13
/**  * 隐式转换是Scala中一种特殊的功能,它能将一种数据类型转换成另外一种数据类型,  * 然后这种数据类型将拥有另外一种数据类型的所有方法,可以看成是对类的一种增强。  * 隐式转换分为两种:  * 1.隐式转换函数  * 2.隐式转换值  *  * 定义隐式转换的关键字是implicit  * 隐式转换的命名方式是one2one的形式  */class SpecialPeron(var name: String)class Older(var name: String)class Student(var name: String)class Teach(var name: String)object ImplicitDemo {  def buySpecialTickWindow(peron: SpecialPeron): Unit = {    if (peron != null) {      println(peron.name + "购买了一张特殊票!")    } else {      println("你不是特殊人群,不能在此买票!")    }  }  //隐式转换函数  implicit def any2SpecialPerson(any: Any): SpecialPeron = {    /**      * if条件结构      */    //    if (any.isInstanceOf[Older]) {    //      new SpecialPeron(any.asInstanceOf[Older].name)    //    } else if (any.isInstanceOf[Student]) {    //      new SpecialPeron(any.asInstanceOf[Student].name)    //    } else {    //      null    //    }    /**      * 模式匹配      */    any match {      case any: Older => new SpecialPeron(any.asInstanceOf[Older].name)      case any: Student => new SpecialPeron(any.asInstanceOf[Student].name)      case _ => null    }  }  def main(args: Array[String]): Unit = {    val older = new Older("老人")    val student = new Student("学生")    val teacher = new Teach("讲师")    buySpecialTickWindow(older)    buySpecialTickWindow(student)    buySpecialTickWindow(teacher)  }}
原创粉丝点击