import java.io.File
import scala.io.Source
/**
* 隐式方法
*/
class RichFile(val file: File) {
def read = Source.fromFile(file.getPath).mkString
}
/**
* 定义object,写明隐式转换(implicit)
* 隐式转换函数一般这样写:前面是转换前的类,后面是增强类
* 函数的参数是要增强的类的实例,函数体就是创建一个增强类
*/
object Context {
implicit def file2RichFile(file: File) = new RichFile(file)
}
//import Context.file2RichFile //放这里也可以
object Hello_Implicit_Conversions {
def main(args: Array[String]): Unit = {
import Context.file2RichFile //引入要增强类中的隐式增强方法
println(new File("/tmp/test.txt").read)
}
}
import java.io.File
import scala.io.Source
/**
* 隐式类
*/
object Context_Helper {
//file增强
implicit class FileEnhancer(file: File) {
def read = Source.fromFile(file.getPath).mkString
}
//Int增强
implicit class Op(x: Int) {
def addX(second: Int) = x + second
}
}
object Implicits_Class {
def main(args: Array[String]): Unit = {
import Context_Helper._ //导入隐式类
//编译器就会在作用域内查找隐式类
println(1.addX(2))
println(1 addX 2)
println(1.+(2))
println(new File("/tmp/test.txt").read)
}
}