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的隐式转换的主要内容,如果未能解决你的问题,请参考以下文章