隐式转换
隐式转换:自动转换
scala默认情况下支持数据类型的自动转换
byte->short->int->long
scala默认情况下支持多态语法中的类型自动转换
child->parent->trait(interface)
scala也允许开发人员自定义类型转换规则
将两个无关的类型通过编程手段实现自定转化
在相同的作用域内,不能含有多个相同的转换规则
package chapter01 object test10 { def main(args:Array[String]):Unit={ // 隐式转换:自动转换 // // scala默认情况下支持数据类型的自动转换 // byte->short->int->long // // scala默认情况下支持多态语法中的类型自动转换 // child->parent->trait(interface) // // scala也允许开发人员自定义类型转换规则 // 将两个无关的类型通过编程手段实现自定转化 // // 在相同的作用域内,不能含有多个相同的转换规则 implicit def transform(d:Double):Int={ d.toInt } val i:Int=5.0 println(i) } }
package chapter01 object test11 { def main(args:Array[String]):Unit={ implicit def transform(mysql:Mysql):Operator={ new Operator() } //动态增加delete功能 var mysql=new Mysql() mysql.select() mysql.delete() } } class Operator{ def delete():Unit={} } class Mysql{ def select():Unit={} }
package chapter01 object test14 { def main(args:Array[String]):Unit={ var user=new User14() user.insert() user.delete() } class User14{ def insert(){} } //放进package里 implicit class Person14(user:User14){ def delete(){} } }
package chapter01 import chapter01.test14.User14 object test14 { def main(args:Array[String]):Unit={ var user=new User14() user.insert() user.delete() } class User14 extends Test{ def insert(){} } } trait Test{} object Test{ implicit class Person14(user:User14){ def delete(){} } }
package chapter01 object test12 { def main(args:Array[String]):Unit={ def test(name:String="zhangshan"):Unit={ println("hello "+name) } test("wangwu")//hello wangwu test() //hello zhangshan //test 报错 //隐式参数 implicit val username:String="zhaoliu" implicit val age:Int=10 //隐式值 def test02(implicit name:String="zhangshan"):Unit={ println("hello "+name) } test02("wangwu")//hello wangwu test02() //hello zhangshan,使用小括号,无法传递隐式值 test02 //hello hello zhaoliu,不使用小括号,可以传递隐式值 } }
package chapter01 object test13 { def main(args:Array[String]):Unit={ //隐式参数 implicit val username:String="zhaoliu" //如果隐式参数存在默认值以及对应类型的隐式值,那么优先采用隐式值 //如果找不到隐式值,那么会使用默认值 //如果没有默认值,那么会发生错误 def test03(implicit name:String):Unit={ println("hello "+name) } //test03() 报错 test03 } }
posted on 2020-08-09 14:46 happygril3 阅读(173) 评论(0) 收藏 举报
浙公网安备 33010602011771号