scala進階17-隱式類/方法-增強類功能

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




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章