Scala入门之隐式转换与隐式参数
2016-08-07 23:11
323 查看
1.隐式转换
隐式转换是一项强大的程序语言功能,它不仅能够简化程序设计,也能够使程序具有很强的灵活性。 隐式函数的名称对结构没有影响.函数可以是任何名字,只看参数与返回,也就是看能不能把传入的参数变成需要的类型就行了。 隐式转换可以定义在目标文件当中,即隐式转换函数与目标代码在同一个文件当中, 也可以将隐式转换集中放置在某个包中,在使用时直接将该包引入即可,后者更常见。 隐式转换发生的时间: 1.当方法中参数的类型与实际类型不一致时 2.当调用类中不存在的方法或成员时,会自动将对象进行隐式转换
2.隐式参数
在一般的函数据定义过程中,需要明确传入函数的参数,如果给函数定义隐式参数的话,则在使用时可以不带参数.
3.蘑菇云代码
package com.dtspark.scala.basics /** * 人是如何变成超人的! */ /** *这是一个人。 */ class Man(val name: String) /*object Man{ implicit def man2SuperMan(man: Man) = new SuperMan(man.name) }*/ /** *这是一个超人,看他们之间是没有任何关系的 */ class SuperMan(val name: String){ //超人有超能力。 def Superpowers = println("Wow,wow,wow," + this.name +" get a super natural power, will save the world now!!") } /** * 这是变身的条件 */ object implicts{ implicit def man2SuperMan(man: Man) = new SuperMan(man.name) } object HelloImplicits { def main(args: Array[String]): Unit = { println("=======隐式转换=========") import com.dtspark.scala.basics.implicts._ //创建一个人出来 val man = new Man("王大锤") //没有引入import com.dtspark.scala.basics.implicts._时这个人是不能使用超能力的。 //所谓隐式转换就是把一个对象转换成另一个对象的过程,目的是调用另一个对象的方法 man.Superpowers println("=======隐式参数=========") implicit val content = "Dollar" //talk要传入两个参数,第二个是隐式的,它会自己去找一个隐式的变量。 //implicit val contentA = "wangdada"如果我这里再定义一个满足String要求的隐式变量,会找不到而报错。 //隐式参数只看参数类型不管参数名称 //mplicit val contentB = "gao" talk("Scala") } def talk(name: String)(implicit content:String) = println(name + " : " +content) }
以上内容来自[DT大数据梦工厂]首席专家Spark专家王家林老师的课程分享。感谢王老师的分享,更多精彩内容请扫描关注[DT大数据梦工厂]微信公众号DT_Spark
相关文章推荐
- Scala入门到精通——第十九节 隐式转换与隐式参数(二)
- Scala入门到精通——第十八节 隐式转换与隐式参数(一)
- scala入门-10 隐式转换、隐式参数、隐式类
- Scala入门学习之隐式转换和隐式参数
- scala入门-10 隐式转换、隐式参数、隐式类
- Scala入门到精通——第十九节 隐式转换与隐式参数(二)
- Scala入门到精通——第十八节 隐式转换与隐式参数(一)
- scala进阶19-隐式参数+隐式转换
- Step into Scala - 26 - 隐式参数,隐式转换与 DSL
- Scala进阶源码实战之八——隐式转换和隐式参数
- Scala中的Implicit(隐式转换,隐式参数,隐式类)
- Scala隐式转换之隐式参数(1)
- Scala泛型、隐式转换和隐式参数、视图介绍、Scala中的上界、下界、结合柯里化进行隐式转换
- scala学习之:隐式转换与隐式参数
- Scala - 隐式转换和隐式参数
- Scala学习笔记6 - 隐式转换和隐式参数
- scala总结(4) -- 隐式转换以及隐式参数
- scala学习笔记(十六) 类型参数与隐式转换
- Scala深入浅出进阶经典 第61讲:Scala中隐式参数与隐式转换的联合使用实战详解及其在Spark中的应用源码解析
- scala有多个隐式转换或隐式参数匹配的是后会发生什么,我很好奇,试验了一把