package imp
object imp03 {
class KM(var value:Double){override def toString: String = s"${value}千米"}
class BM(var value:Double){override def toString: String = s"${value}百米"}
class M(var value:Double){override def toString: String = s"${value}米"}
implicit def km2bm(km: KM): BM = new BM(km.value * 10)
implicit def bm2m(bm: BM): M = new M(bm.value * 100)
implicit def km2m(km: KM): M = new M(km.value * 10 * 100)
def main(args: Array[String]): Unit = {
val km = new KM(1.1)
val bm: BM = km
println(km)
println(bm)
val m: M = bm
println(m)
val m1: M = new KM(2)
println(m1)
}
}