用途
隐式转换可以把一种type转换为另一种type
比如
case class Centimeters(value: Double) extends AnyVal
case class Meters(value: Double) extends AnyVal
case class Kilometers(value: Double) extends AnyVal
object Demo5 extends App {
//报错,因为创建的是Meters类型 ,所以规定变量类型的时候不能是Centimeters类型
val cm: Centimeters = new Meters(2.5)
}
//定义Centimeters类,构造函数有一个参数value
case class Centimeters(value: Double) extends AnyVal
//定义Meters类
case class Meters(value: Double) extends AnyVal
//定义Kilometers
case class Kilometers(value: Double) extends AnyVal
object Demo5 extends App {
val cm: Centimeters = new Meters(2.5)
println(cm.value)//250
//定义隐式转换方法,定义一个m转cm的方法
implicit def m2cm(x: Meters): Centimeters = {
val cm: Centimeters = Centimeters(x.value * 100)
cm
}
}
//定义Centimeters类,构造函数有一个成员变量value
case class Centimeters(value: Double) extends AnyVal
//定义Meters类
case class Meters(value: Double) extends AnyVal
//定义Kilometers
case class Kilometers(value: Double) extends AnyVal