第16课:Scala implicits编程彻底实战
2016-08-05 21:52
155 查看
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 makeMiracles = println("Wow,wow,wow...") } object HelloImplicits { def main(args: Array[String]): Unit = { val man = new Man("Scala") man.makeMiracles } }
Result:
Wow,wow,wow..
如果在对象Man的方法 man2SuperMan前面没有implicit时,main方法中 man.makeMiracles是不被提示。
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 makeMiracles = println("Wow,wow,wow...") } object HelloImplicits { def main(args: Array[String]): Unit = { // 这句import显式的引用Man,不加也可 调用 makeMircales方法 // 加与不加,效果一样。 import com.dtspark.scala.basics.Man._ val man = new Man("Scala") // 如果没有对象Man, man.makeMiracles是不能被成功提示; // 且在该Man对象的方法前声明implicit, 才能可以被调用。 man.makeMiracles implicit val content1 = "Dollor" talk("Scala1") talk("Scala2")("Money") } def talk(name: String) (implicit content:String) = println(name + " : " + content) }Result:
Wow,wow,wow...
Scala1 : Dollor
Scala2 : Money
* talk方法的两种调用说明:
前一种是调用时第二个参数省略,前提是声明了一个隐式变量,变量名随便取;
后一种是直接写上两参数,和我们理解的常规方法调用一样。
相关文章推荐
- 大数据Spark “蘑菇云”行动前传第16课:Scala implicits编程彻底实战及Spark源码鉴赏
- 第16课:Scala implicits编程彻底实战及Spark源码鉴赏
- Scala implicits编程彻底实战及Spark源码鉴赏
- Dt大数据梦工厂王家林老师 Scala实战详解之第16讲 Scala中包的定义、包对象、包的引用、包的隐式引用
- Scala隐式( implicit)编程彻底实战之编程进阶(7)
- 大数据Spark“蘑菇云”行动-第11课:Scala面向接口彻底实战和Spark源码鉴赏
- 17.Scala中包、类、对象、成员、伴生类、伴生对象访问权限实战彻底详解
- 大数据Spark “蘑菇云”行动前传第4课:零基础彻底实战Scala控制结构及Spark源码解析
- 大数据Spark “蘑菇云”行动前传第10课:Scala继承彻底实战和Spark源码鉴赏.
- 第4课:零基础彻底实战Scala控制结构及Spark源码解析
- Scala继承彻底实战和Spark源码鉴赏
- 大数据Spark“蘑菇云”行动-第10课:Scala继承彻底实战和Spark源码鉴赏
- Scala学习第十七天 包、类、对象、成员、伴生类、伴生对象访问权限实战彻底详解
- 大数据DTSpark"蘑菇云"行动之 第四课:零基础彻底实战Scala控制结构
- 第10课:Scala继承彻底实战和Spark源码鉴赏
- 第11课:scala面向接口编程彻底实战和spark源码鉴赏
- Spark 2.0从入门到精通:Scala编程、大数据开发、上百个实战案例、内核源码深度剖析(278讲全)
- Scala中类型变量Bounds代码实战及其在Spark中的应用源码解析之Scala学习笔记-34
- Scala中View Bounds代码实战及其在Spark中的应用源码解析之Scala学习笔记-35
- 第55讲:Scala中Infix Type实战详解学习笔记