介绍
调用函数时,将 代码块 作为参数,传递给函数
值调用
传统调用函数,传递参数,是把计算后的值传递给函数
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