scala传名函数

先做实验,代码如下:

object TestFun {
  def main (args:Array[String]){
    delayed(time())
  }
  def time() = {
      println("获取时间,单位为纳秒")
      System.nanoTime
   }
   def delayed( t: => Long ) = {
      println("在 delayed 方法内")
      println("参数: " + t)
      t
   }
 }

实验结果如下:

在 delayed 方法内
获取时间,单位为纳秒
参数: 22296025792244
获取时间,单位为纳秒

上例中delay方法的参数变量t上使用了=>符号,以表示是传名调用(传名调用表示在调用前不计算表达式的值,直接带入函数体内,当要用的时候才开始处理),所以在delayed方法中,先打印提示信息,然后第二个println函数开始用到参数t,这样就开始处理time函数了。

猜你喜欢

转载自my.oschina.net/u/2963604/blog/1803354