隐式转换的使用陷阱|学习笔记

简介: 快速学习隐式转换的使用陷阱。

开发者学堂课程【Scala 核心编程-基础:隐式转换的使用陷阱】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/609/detail/9012


隐式转换的使用陷阱

 

1、隐式转换的前提

在进行隐式转换时,需要遵守两个基本的前提:

(1)不能存在二义性。

(2)隐式操作不能嵌套使用 // [举例: ]如:隐式转换函数。

//使用隐式函数来解决

//说明

//1. 在底层会生成个函数 f1$1...

implicit def f1(d:Double): Int = {

d. toInt

val num3:Int = 5.6//错误==> f1(5.6)  

}

这有一个隐式函数Double 转成 int但是这个操作不能够在本身的函数去用比如把5.6给 int本身是可以的但是把这句话写到这里面就形成了嵌套的使用在底层它就知道是 f1(5.6) ,所以 有一个前提是隐式操作不能嵌套使用

2、隐式转换的注意事项

创建 ImplicitNotice选择 object

package com. atguigu. chapter09

object ImplicitNotice {

def main(args: Array[String]): Unit = {

//1.隐式转换不能有二义性否则会报错

//2.隐式转换不能嵌套使用

implicit def f1(d: Double): Int = {   Double 类型转成 Int

d. toInt

//val num2:Inf = 2.3 //底层 f1$1(2.3) //f1$1对应的就是 f1,就会形成递归因此语法是不支持的

}

val num1: Int = 1.1

}

}

相关文章
|
5月前
|
程序员 编译器 C语言
『C语言进阶』隐式类型转换规则
『C语言进阶』隐式类型转换规则
|
11月前
|
编译器 C语言
C语言编程陷阱:语法陷阱
c语言要求在函数调用时即使函数不带参数,也应该包括函数列表。 是挂else问题
53 0
|
1月前
|
存储 C语言
【C语言基础考研向】02 数据类型-常量-变量
本文介绍了编程中的基本概念,包括数据类型分类、常量与变量的定义及使用。首先概述了四大类数据类型:基本类型(整型、浮点、字符型)、构造类型(数组、结构体)、指针类型和空类型。接着阐述了常量与变量的区别及命名规则,并详细说明了整型、浮点型和字符型数据的特点与应用。最后总结了常见的易错点,如字符串与字符常量的区别及浮点数的默认输出格式。
|
5月前
|
存储 安全 编译器
【C++ 隐式转换】探究C++中隐式转换的奥秘
【C++ 隐式转换】探究C++中隐式转换的奥秘
193 0
|
5月前
|
存储 编译器 C语言
C 语言:类型转换与常量的细致理解
有时,您必须将一种数据类型的值转换为另一种类型。这称为类型转换
143 0
|
存储 程序员 编译器
【C语言】你不知道的隐式类型转换规则
本文接着C语言中的操作符(万字详解)讲解隐式类型转换规则,还有没学操作符的老铁可以回头看看。 在 C 语言中,类型转换的方式一般可分为隐式类型转换和显示类型转换(也称为强制类型转换)。 其中隐式类型转换由编译器自动进行,不需要程序员干预。 隐式类型转换通常有两种情况:整形提升和算术转换。
410 0
|
存储 C语言
C语言变量常量,基本数据类型及数据类型转换详讲(二)
C语言变量常量,基本数据类型及数据类型转换详讲
168 0
|
存储 安全 编译器
C语言变量常量,基本数据类型及数据类型转换详讲(三)
C语言变量常量,基本数据类型及数据类型转换详讲
165 0
|
存储 JavaScript 前端开发
C语言变量常量,基本数据类型及数据类型转换详讲(一)
C语言变量常量,基本数据类型及数据类型转换详讲
170 0
c语言自动与强制数据类型转换
数据类型转换:几种基本数据类型之间如何进行自动转换,如何进行强制转换
c语言自动与强制数据类型转换