隐式转换

10 阅读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)

  // ____________________________________________________

  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)
  }
}