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")
    })
  }
}
相关文章
相关标签/搜索