函数传名调用

传值调用

object Test {
  def main(args: Array[String]) {
    delayed(time());
  }

  def time() = {
    println("获取时间,单位为纳秒")
    System.nanoTime
  }
  def delayed( t: Long ) = {
    println("在 delayed 方法内")
    println("参数: " + t)
    print("参数: " + t)
  }
}

结果:


函数传名调用_第1张图片
image.png

传名调用

object Test {
  def main(args: Array[String]) {
    delayed(time());
  }

  def time() = {
    println("获取时间,单位为纳秒")
    System.nanoTime
  }
  def delayed( t: => Long ) = {
    println("在 delayed 方法内")
    println("参数: " + t)
    print("参数: " + t)
  }
}

结果:


函数传名调用_第2张图片
image.png

传值调用:先计算表达式的值,在函数体内部不会改变
传名调用:在函数体内,调用一次计算一次

你可能感兴趣的:(函数传名调用)