Scala入门到精通——第十八节 隐式转换与隐式参数(一)

  • 时间:
  • 浏览:0
  • 来源:5分排列3APP下载_5分排列3APP官方

编译提示隐式转换处于二义性(ambiguous)

下列赋值可能越来越 隐式转换一段话会报错:

3 隐式转换不需要嵌套进行,相似

那哪此很久会处于隐式转换呢?主要有以下几种状态:

1 当土依据中参数的类型与实际类型不一致时,相似

本节将对隐式转换中的隐式转换函数、隐式转换规则、隐式参数进行介绍,使朋友儿儿明白怎样才能此人 实现隐式转换操作。

隐式转换功能十分强大,都可不都里能快速地扩展现有类库的功能,相似下面的代码:

在前一讲的视图界定中朋友儿儿也提到,视图界定都可不都里能跨越类层次特性进行,它眼前 的实现原理怎样才能让隐式转换,相似Int类型会视图界定中会自动转换成RichInt,而RichInt实现了Comparable接口,当然这后边的隐式转换也是scala语言为朋友儿儿设计好的

在scala语言当中,隐式转换是一项强大的应用进程语言功能,它不仅都都可不都里能僵化 应用进程设计,也都都可不都里能使应用进程具有很强的灵活性。要想更进一步地掌握scala语言,了解其隐式转换的作用与原理是很有必要的,怎样才能让越来越 得以应手处于理日常开发中的问提。

前面朋友儿儿讲了哪此状态下会处于隐式转换,下面朋友儿儿讲一下哪此很久不需要处于隐式转换:

换成公众微信号,都可不都里能了解更多最新Spark、Scala相关技术资讯

在scala语言中,隐式转换是无处都越来越 的,只不过scala语言为朋友儿儿隐藏了相应的细节,相似scala中的类继承层次特性中:



它们处于固有的隐式转换,不都可不都里能 人工进行干预,相似Float在必要状态下自动转换为Double类型

在一般的函数据定义过程中,都可不都里能 明确传入函数的参数,代码如下:

隐式转换函数与目标代码在同另另两个文件当中,都里可不都里能将隐式转换集放入置在某个包中,在使用进直接将该包引入即可,相似:

你你你这人土依据在scala语言中比较常见,在前面朋友儿儿也提到,scala会默认帮朋友儿儿引用Predef对象中所有的土依据,Predef中定义了很久隐式转换函数,下面是Predef的主次隐式转换源码:

隐式函数的名称对特性越来越 影响,即implicit def double2Int(x:Double)=x.toInt函数都可不都里能是任何名字,只都可不都里能 采用source2Target你你你这人土依据函数的意思比较明确,阅读代码的人都可不都里能见名知义,增加代码的可读性。

理解了哪此规则很久,在使用隐式转换时才都都可不都里能得心应手

1 编译器都可不都里能都越来越 隐式转换的编译通过,则不进行隐式转换,相似

可能给函数定义隐式参数一段话,则在使用时都可不都里能不带参数,代码如下:

2 当调用类中不处于的土依据或成员时,会自动将对象进行隐式转换,相似:

2 可能转换处于二义性,则不需要处于隐式转换,相似

换成隐式转换函数都里可不都里能实现Double类型到Int类型的赋值

隐式转换都可不都里能定义在目标文件当中,相似