scala 隐式转换(3

22 阅读1分钟
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)
  }
}