10.1 隐式转换

为啥需要隐式转换?

看下面的代码:

object Scala01 {
  def main(args: Array[String]): Unit = {
    // 当把范围大的数据类型的数据复制给小范围的类型的数据的时候, 必须要强制转换, 否则会报错. 有没有办法让这种情况也能按照我们想要的方自动转换呢? 
    val num : Int = 3.5 //?
    println(num)
  }
}

使用隐式转换可以完全我们上面的需求.

隐式转换需要执行隐式函数!

10.1.1 隐式函数基本介绍

隐式转换函数是以implicit关键字声明的带有单个参数的函数。

这种函数会根据需要将会自动被调用,将值从一种类型转换为另一种类型.

10.1.2 隐式函数快速入门

package com.atguigu.day10

object ImplicitDemo1 {
  def main(args: Array[String]): Unit = {
    // 隐式函数
    implicit def f1(d: Double): Int = {
      d.toInt
    }
    var a: Int = 3.9
    println(a)
  }
}

10.1.3 隐式函数底层工作原理

10.1.4 隐式转换的注意事项和细节

  1. 隐式转换函数的函数名可以是任意的,隐式转换与函数名称无关,只与函数签名(函数参数类型和返回值类型)有关。

  2. 隐式函数可以有多个(即:隐式函数列表),但是需要保证在当前环境下,只有一个隐式函数能被识别

有两个隐式函数都可以实现从 Double->Int的转换, 所以报错. 有点类似于 Java 中方法重载一样.

  1. 隐式转换函数的命名: 通俗的写法是source2Targe, 比如:double2Int
Copyright © 尚硅谷大数据 2019 all right reserved,powered by Gitbook
该文件最后修订时间: 2019-01-06 17:25:18

results matching ""

    No results matching ""