scala教程:控制抽象

介绍

调用函数时,将 代码块 作为参数,传递给函数

值调用

传统调用函数,传递参数,是把计算后的值传递给函数

def main(args: Array[String]): Unit = {

  def fun(a:Int):Unit={
    println(a)
  }
  //调用函数,值传递
  fun(1)

  //定义函数,返回Int型
  def fun2():Int={
    //其他代码略
    return 1
  }
  //先调用fun2函数,执行得到结果1,将结果1传递给fun()函数,本质还是值调用
  fun(fun2())
}

名调用

调用函数时,将 代码块 作为参数,传递给函数

定义语法

def 函数名(形参名: => 类型):返回类型 = {

}

解释:

  • 形参名: => 类型 表示代码块,=> 表示该代码块的返回类型

例子

把代码块传递过去

def main(args: Array[String]): Unit = {

  def fun(a: =>Int):Unit = {//注意这里变量 a 没有小括号了
    println(a)
    println(a)
  }

}

调用方式1

将代码块作为参数,传入函数

def main(args: Array[String]): Unit = {

  def fun(a: =>Int):Unit = {//注意这里变量 a 没有小括号了
    println(a)
    println(a)
  }

  fun({
    println("代码块")
    10
  })
}

执行结果:

代码块
10
代码块
10

解释:

把

{
  println("代码块")
  10
}

代码块 作为参数,传入 fun() 函数,此时 fun() 函数中的 a,就被替换成了代码块

调用方式2

将值作为参数,传入函数

def main(args: Array[String]): Unit = {

  def fun(a: =>Int):Unit = {//注意这里变量 a 没有小括号了
    println(a)
    println(a)
  }

  fun(10)
}

执行结果:

10
10

调用方式3

将函数作为参数,传入函数

def main(args: Array[String]): Unit = {

  def fun(a: =>Int):Unit = {//注意这里变量 a 没有小括号了
    println(a)
    println(a)
  }

  def myFun():Int = {
    println("myFun")
    123
  }
  fun(myFun())
}

执行结果:

myFun
123
myFun
123

原文出处:/show_1IX1BpgJucKU.html