35.隐式函数

34 阅读1分钟

隐式 偷偷地....

=================================================

隐式函数

作用:在类型转换的过程中,被自动调用

  implicit def double2Int(d:Double):Int = {
    println("double2Int被调用了......")
    d.toInt
  }
  def main(args: Array[String]): Unit = {
//    不能把Double类型 保存到 IN。 这样会有精度损失,不会自动做转换。
    var i: Int = 1.1
//    可以把int类型保存到Double,会自动转换
    var d:Double = 1
  }
//  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 = {
    new RMB(my.value * 6.9)
  }

  implicit def rmb2my(rmb: RMB): MY = {
    new MY(rmb.value * 0.14)
  }

  def main(args: Array[String]): Unit = {
    val m1:RMB = new MY(100)
    println(m1)
    val my1:MY = new RMB(1000)
    println(my1)
  }