package imp
object imp03 {
// 1 美元 = 6.9人民币
// 1 人民币 = 0.14美元
class MY(var value:Double) {
override def toString: String = s"${value}美元"
}
class RMB(var value:Double) {
override def toString: String = s"${value}人民币"
}
implicit def my2Rmb(my: MY): RMB = {
// 按照1美元=6.9人民币的汇率计算转换后金额
new RMB(my.value * 6.9)
}
implicit def rmb2My(rmb: RMB): MY = {
// 按照1人民币=0.14美元的汇率计算转换后金额
new MY(rmb.value * 0.14)
}
def main(args: Array[String]): Unit = {
// 利用隐式函数my2Rmb,自动将MY类型转换为RMB类型
val m1: RMB = new MY(100) // 此处无需显式写 : MY,隐式转换会自动触发
println(m1) // 输出:690.0人民币(100美元 * 6.9 = 690人民币)
// 可选测试:人民币转美元
val m2: MY = new RMB(100)
println(m2) // 输出:14.0美元(100人民币 * 0.14 = 14美元)
}
}