scala的 implicit class

object Helpers{
  implicit class IntWithTimes(x:Int){ //用implicit class說明了IntWithTimes類是一個隱式類,它表示:一個Int整數自動具備times方法
    def times[A](f: => A):Unit = {
      def loop(current:Int):Unit = {
        if(current > 0) {
          f
          loop(current - 1)
        }
      }
      loop(x)
    }
  }
}
object ImplicitclassTest {
  def main(args: Array[String]): Unit = {
    import Helpers._
    val i = 3
    i.times(println(i)) //編譯器會自動將這個函數println(i)轉換成times中的參數:f:=>A,也就是說會將println(i)這句連續執行三次
    i.times(()=>{   //這種形式的函數參數爲何不能正常println三次呢?
      println("test")
    })
  }
}
相關文章
相關標籤/搜索