20.0 Scala隐式转换和隐式参数
2016-05-08 13:14:03
3,770
0
隐式转换
和隐式参数
是Scala两个强大的工具,用于丰富现有类的功能。
1、隐式转换简介
隐式转换用于在类型之间做转换。例如将A类型转换成B类型。
举例来说,我们知道Scala中的Int类型的值可以直接调用to方法。如:
scala> 1 to 10 res0: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5, 6, 7, 8,9, 10)
但是在Int
类的源码中并没有直接定义to方法(读者可以自行查看源码)。实际上to方法是在RichInt
类中定义的。Int值1首先会被转换成RichInt,然后再应用to方法。
这里我们我们需要考虑两个问题:
1、scala怎么知道要进行隐式转换?
答:当调用一个类的不存在的方法时,scala会尝试进行隐式转换(隐式转换有三种场景,这只是其中一种场景)。
2、scala怎么知道将Int类型自动转换成RichInt类型,而不是其他类型?
这是通过一个隐式转换函数来完成的。我们可以自己定义隐式转换函数,因此我们当然可以将源类型A其转换成任何我们想要的目标类型B。
上一篇:1.0 Scala简介
下一篇:20.1 隐式转换规则
