标签:
今天学习了下隐式转换的内容。所谓隐式转换,就是说,一个实例拥用1 2 3方法,但是当它需要4方法的时候,它没有,但是却可以通过转换成另一种类型来调用4方法,而且这种转换是自动转换不需要人为干预的,这种形为就叫做隐式转换。让我们通过实例来分析一下:
import java.io.File
import scala.io.Source
class RichFile(val file:File){
def read = Source.fromFile(file.getPath).mkString
}
object Context{
implicit def file2RickFile(file:File) = new RichFile(file)//将File转换成RichFile
}
object test59 {
def main(args:Array[String]){
import Context.file2RickFile
println (new File("E:\\text.txt").read)
}
}
首先,我们定义一个class RichFile,当的参数类型是File,类拥有read方法。
然后定义一个单例对像Context,它拥有一个隐式方法,file2RichFile,此方法会将File类型的file传给类RichFile,实例化成RichFile的对像。
然后在main方法中,我们导入此方法。
接着,我们新建一个File类型的对像,让它去调用read方法。但是此file没有read方法,这时,编译器会在main方法体内寻找可以实现read方法的方法,也就是file2RichFile,通过此方法,将file实例化成RichFile的对像,这时,RichFile类型的file就拥有了read方法,可以正常调用了。
分享下更多的scala资源吧:
标签:
原文地址:http://www.cnblogs.com/qingyuesama/p/4815035.html