Scala隐式参数、隐式函数、隐式类

it2025-12-24  7

一.隐式参数

//隐式参数 //隐式参数需要定义在Object中 //一个类型在同一个作用域内只能有一个 //示例:定义一个Int类型以及String类型的隐式参数 implicit var a:Int=30 implicit var b:String="40" //第一种:函数使用隐式参数 def ImpTest1(a:Int,b:Int)(implicit c:String,d:Int):Unit={ println(a+b+c+d) } ImpTest1(10,20) //这里方法中会调用隐式参数得值 //第二种:函数使用隐式参数 def ImpTest2(a:Int,b:Int)(implicit c:String,d:Int):Unit={ println(a+b+c+d) } ImpTest1(10,20)(30,"40") //这里方法不会调用隐式参数得值,而是接收输入得值 //第三种:函数使用隐式参数 def ImpTest3(a:Int,b:Int)(implicit c:String="40",d:Int=30):Unit={ println(a+b+c+d) } ImpTest1(10,20)() //如果使用函数时隐式参数没传值,但有括号,则会使用定义函数时赋给隐式参数得初始值

二.隐式函数

//定义隐式函数:将Double类型转Int implicit def douobleToInt(a:Double)=a.toInt //定义隐式函数:将String类型转Int implicit def stringToInt(a:String)=Integer.parseInt(a) //在main里定义变量自动将Double、String(纯数字)转成Int def main(ages:Array[String]):Unit={ var a:Int=3.5 var b:Int="123" println(a) //输出结果:3 println(b) //输出结果:123 } }

三.隐式类

//隐式类的参数类型会自动获取隐式类中的所有方法 //定义类(类本身没有方法) class Person{} object ImpClass{ //隐式类:参数类型为Person类型 implicit class demoImp(p:Person) { //定义方法:两个数相加 def add(a:Int,b:Int)=a+b //定义方法:两个数相乘 def chen(a:Int,b:Int)=a*b } def main(ages:Array[String]):Unit={ //创建Person对象p val p=new Person //p可以调用函数add println(p.add(10,20)) //输出结果:30 //p也可以调用函数chen println(p.chen(10,20)) //输出结果:200 } }
最新回复(0)