/** * 隐式转换是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) } }
Scala隐式转换之隐式转换函数
最新推荐文章于 2022-01-03 16:39:04 发布