07名调用与值调用

本文最后更新于 2021-08-05 11:42:59

名调用与值调用

值调用相当于是先计算在传参

名调用是传计算过程,每次调用都会执行一次计算过程

object FunctionDemo6 {
  def main(args: Array[String]): Unit = {
    var f=(a:Int,b:Int)=>{
      println(".......")
      a+b
    }
    var f1=()=>{
      println(".......")
      1
    }

    func1(f(1,2))
    func2(f(1,2))
    
    //没有参数也必须带括号
    //实际上不是传函数
    func2(f1())
      
    //可以用中括号引用起来
    func2({
      println("bbbbbbbbb")
     2
    })
      
    //可以直接去掉小括号
    func2{
      println("bbbbbbbbb")
      2
    }
      
  }

  def func1(a: Int) = {
    println(a)
    println(a)
    println(a)
  }

  //名调用,接收的不是一个值,是一个计算过程
  //接收一段返回Int的代码
  //有点像只要求返回值的函数
 def func2(a: => Int) = {
    println(a)
    println(a)
    println(a)
  }
}

//.......
//3
//3
//3
//.......
//3
//.......
//3
//.......
//3
//.......
//1
//.......
//1
//.......
//1

07名调用与值调用
https://jiajun.xyz/2020/11/03/scala/07名调用与值调用/
作者
Lambda
发布于
2020年11月3日
更新于
2021年8月5日
许可协议