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)
}
}