Scala 函数与方法的区分与理解

方法:

1
2
3
4
5
scala> def add(x:Int, y: Int) = x + y
add: (x: Int, y: Int)Int

scala> add(1, 2)
res0: Int = 3

函数:

1
2
3
4
5
6
7
scala> val add_f = (x: Int, y: Int) => x + y
add_f: (Int, Int) => Int = <function2>

// 根据内容可以看出add_f是一个函数Function

scala> add_f(1, 2)
res1: Int = 3

上面 ‘=’号右边的内容 (x: Int, y: Int) => x + y是一个函数体,
方法只能用 def 接收,函数可以用 def 接收,也可以用 val 接收。
当函数用 def 来接收之后,不再显示为 function ,转换为方法。
方法可以省略参数,函数不可以。 函数可以作为方法的参数。 看下面的例子:

1
2
3
4
5
scala> val a = () => 100
a: () => Int = <function0>

scala> val a = => 100
<console>:1: error: illegal start of simple expression

看这里: val a = => 100 // 当函数参数为空时报错