scala中隐式转换之隐式类
2017-12-07 18:04
267 查看
/** * Created by root * Description :隐式类: * 1.其所带的构造参数有且只能有一个;并且构造器的参数是转换之前的对象 * 2.隐式类必须被定义在类,伴生对象和包对象里 * 3.隐式类不能是case class(case class在定义会自动生成伴生对象与2矛盾) * 4.作用域内不能有与之相同名称的标示符 */ class ImplicitTest3 { def getName = "ImplicitTest3" } object ImplicitUtils { implicit class StringImprovement(val s : String){ //隐式类 def increment = s.map(x => (x +1).toChar) def toMore = (s.length,s.substring(1,3),s.contains("a")) } implicit class IntImprovement(val a : Int){ //隐式类 def square = a * a def cube = a * a * a } implicit class ImplicitTest3Improvement(val im : ImplicitTest3){ //隐式类 def getImName = im.getName } } object Main extends App{ import ImplicitUtils._ println("hello".increment) // 编译器在hello对象调用increment时发现对象上并没有increment方法,此时编译器就会在作用域范围内搜索隐式实体, // 发现有符合的隐式类可以用来转换成带有increment方法的StringImprovement类,最终调用increment方法。 println("hello".toMore) println(2.square) println(3.cube) val im = new ImplicitTest3 println(im.getImName) }
相关文章推荐
- 深入理解Scala的隐式转换系统
- 【Spark-Scala语法】implicit(隐式转换)关键字详解
- Scala隐式转换
- scala学习手记35 - 隐式类型转换
- Scala中的Implicit(隐式转换,隐式参数,隐式类)
- 65.Scala中隐式转换内幕操作规则揭秘、最佳实践及其在Spark中的应用源码解析
- Step into Scala - 26 - 隐式参数,隐式转换与 DSL
- scala学习之:隐式转换与隐式参数
- 深入理解Scala的隐式转换系统
- scala中模式匹配、异常处理、高阶函数、偏函数、隐式转换
- scala学习笔记(十六) 类型参数与隐式转换
- 深入理解Scala的隐式转换系统
- Scala的函数,高阶函数,隐式转换
- 【Scala类型系统】隐式转换与隐式参数
- scala 隐式转换参数
- Scala入门到精通——第十八节 隐式转换与隐式参数(一)
- scala学习笔记-隐式转换和隐式参数
- Scala隐式转换和隐式参数
- scala implicit的隐式转换
- Scala中隐式参数与隐式转换的联合使用实战详解及其在Spark中的应用源码解析之Scala学习笔记-51