隐式转换

scala作为一门dsl语言,可以说隐式转换功劳不少,原本想自己写一个例子的,结果在github(https://gist.github.com/1078092)看到了一个觉得不错,可以分享

package sample

import java.util.{TimerTask, Timer}

/**
* 以下一段java的调用代码
*/
object TimerDemo extends Application {
  new Timer().schedule(new TimerTask {
    def run() {
      println("Hello")
    }
  }, 100L)
}

//如果在scala里面调用,经过包装后

case class TimerW(timer: Timer) {
  def scheduleAfter(delay: Long)(code: => Unit): Unit = timer.schedule(
    new TimerTask {
      override def run() = code
    }, delay)
}

object NuttycombeExample extends Application {
  import TimerW._
//调用就简单很多了
  (new Timer()).scheduleAfter(100L) {
    println("Hello")
  }
}

object TimerW {
  implicit def t2tw(timer: Timer): TimerW = TimerW(timer)
}

你可能感兴趣的:(转换)