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

本文介绍了Scala中的隐式参数、隐式函数和隐式类的使用。通过示例展示了如何定义和应用隐式参数,如何进行类型转换的隐式函数,并利用隐式类为对象添加方法。在main方法中,隐式转换使得Double和String可以直接转换为Int并进行运算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.隐式参数

//隐式参数
//隐式参数需要定义在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
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值