imp

34 阅读1分钟

1.不能把Double类型 保存到 Int。这样会有精度损失,不会自动做转换。 2.可以把Int类型保存到Double,会自动转换

object imp01 {
  // 隐式 偷偷的 ....
  implicit def double2Int(d:Double):Int = {
    println("double2Int被调用了......")
    d.toInt
  }

  def main(args: Array[String]): Unit = {
    // 不能把Double类型 保存到 Int。这样会有精度损失,不会自动做转换。
    var i: Int = 1.1

    // 可以把Int类型保存到Double,会自动转换
    var d:Double = 1
  }
}
object imp02{
  class KM(var value:Double) {
    override def toString: String = s"${value}千米"
  }

  class M(var value:Double) {
    override def toString: String = s"${value}米"
  }

  implicit def km2m(km:KM):M = {
    new M(1000 * km.value)
  }

  def main(args: Array[String]): Unit = {
    val km1 = new KM(1)
    val m1:M = km1

    println(km1)
    println(m1)
  }
}