scala中implicit关键字作用

2017-02-28  本文已影响0人  zhj_njuer

在scala中,经常会遇到implicit关键字,这是个非常神奇的功能,但是不了解用法就会觉得代码混乱难懂。今天来简单记录下他的用法。

implicit主要有三种用法:

implicit def convertInt2String(i: Int) = i.toString

这样就可以直接sayHello(5)这样用。

  implicit def param: T = T()
  def function(s: String)(implicit t: T)

  function("param1") // == function("param1")(param)
import scala.io.Source
import java.io.File
object ImplicitClass {
  import Context._
  def main(args: Array[String]) {
    1.add(2)  // 在当前作用域中寻找 将Int(1) 作为变量的类同时具有add 的方法的类,如有,则执行
    new File("/home/resources/file.txt").read()  // 在当前作用域中寻找 将File 作为变量的类同时具有read的方法的类,如有,则执行
  }
}
object Context{
  implicit class ConvertInt(inst: Int){
    def add(tmp: Int) = inst + tmp
  }
  implicit class FileEnhance(file: File){
    def read() = Source.fromFile(file.getPath).mkString
  }
}
上一篇 下一篇

猜你喜欢

热点阅读