07名调用与值调用

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

名调用与值调用

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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日
许可协议