大数据全系列 教程
1869个小节阅读:467.3k
目录
408考研
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
由implicit关键字修饰的函数为隐式函数。
xxxxxxxxxx
package com.itbaizhan.chapter09
object ImplicitTransform1 {
def main(args: Array[String]): Unit = {
//TODO 1.两种不同类型,它是如何自动类型转换的呢?底层就是通过隐式类型转换完成的。
/*val it: Int = 8
val lg: Long = it*/
//TODO 3.在程序编译错误时,可以通过隐式转换中类型转换机制尝试进行二次编
// 译,将本身错误无法编译通过的代码通过类型转换后编译通过。这个过程看不
// 见,但是存在,就称之为隐式转换。(需要写到被隐式转换的前面才能生效)
implicit def trans(dou: Double): Int = {
dou.toInt
}
//2.1 分数初始为Int类型,通过调用第三方方法获得。
val score: Int = getScore()
println(score)
//2.4 分数当支持Double类型后,上一行代码就遇到编译不同的过的情况。-> 3
}
//2.2最开始分数都是Int类型
/*def getScore(): Int ={
89
}*/
//2.3后来分数变为能够支持到Double类型。
def getScore(): Double = {
89.5
}
}
查看该类编译后文件转换为Java代码如下:
xxxxxxxxxx
public final class ImplicitTransform1$ {
public static ImplicitTransform1$ MODULE$;
static {
new ImplicitTransform1$();
}
public void main(final String[] args) {
int score = trans$1(this.getScore());
.MODULE$.println(BoxesRunTime.boxToInteger(score));
}
public double getScore() {
return 89.5D;
}
private static final int trans$1(final double dou) {
return (int)dou;
}
private ImplicitTransform1$() {
MODULE$ = this;
}
}
实时效果反馈
1. 关于Scala隐式函数的描述,错误的是:
A 由implicit关键字修饰的函数为隐式函数。
B 隐式函数需要程序员编写程序人为的进行调用。
C 通过添加隐式函数的方式实现隐式转换,符合OCP原则。
答案:
1=>B 不需要人为的调用。