Scala的隐式转换

Posted Nathon的学习笔记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Scala的隐式转换相关的知识,希望对你有一定的参考价值。

在scala里面有一个它自己的特点--隐式转换,其实也可以理解为对类的增强或者延伸。举一个例子,比如商家在给消费者卖东西的时候,会给特殊人群优惠。这里预先定义四个类特殊人群,小孩,老人和成年人。

我们可以通过scala里面的implicit关键字来定义一个隐式转换函数,这样通过调用特殊人群是否享受优惠方法的时候可以自己判断,是否有特殊的权限。具体的实现如下所示:

可以看出来,隐式转换的特点是比较灵活的处理方式,不必比较死的处理问题。

class SpecialPerson(var name:String)

class OlderPerson(var name:String)

class Children(var name:String)

class Adults(var name:String)
object ImplicitDemo {

def SpecialDiscounts(p:SpecialPerson) ={
if(p != null){
println(p.name + " 您可以享受特殊优惠!")
}else{
println("您不是特殊人群!")
}
}

implicit  def any2SpecialPerson(any:Any) = {
if(any.isInstanceOf[OlderPerson]){
val OlderPerson = any.asInstanceOf[OlderPerson]
new SpecialPerson(OlderPerson.name)
}else if(any.isInstanceOf[Children]){
val Children = any.asInstanceOf[Children]
new SpecialPerson(Children.name)
}
else{
null
   }
}
def main(args:Array[String]):Unit = {
val Older = new OlderPerson("An OlderPerson")
val Child = new Children("A Child")
val Adult = new Adults("An Adult")
SpecialDiscounts(Child)
}
}



以上是关于Scala的隐式转换的主要内容,如果未能解决你的问题,请参考以下文章

转载:深入理解Scala的隐式转换系统

25.scala的隐式转换

Scala的隐式转换

Scala中的隐式转换|理解

Scala:从泛型类型到第二泛型类型的隐式转换

scala学习笔记-隐式转换与隐式参数(18)