Scala 有方法与函数,二者在语义上的区别很小。Scala 方法是类的一部分,而函数是一个对象可以赋值给一个变量。
1,Scala 中使用 val 语句可以定义函数,def 语句定义方法
//定义一个方法
def sum(a:Int, b:Int) = a + b
//因为方法即操作符,所以在调用方法时有时可以省略括号,而函数必须带上括号
//例如加号+就是一个方法,a + b也可以写成a.+(b)
定义一个函数
val sum2 = (a: Int, b: Int) => a + b
2,方法不能作为参数进行传递调用!!!,函数因为是对象所以可以作为参数进行传递!!!
3,但是Scala中可以把方法转换成函数
//后面加下划线可以把方法转换成函数,注意要有空格
sum _
4,注:直接传方法也可以运行,Scala会自动将其转换成函数
def sum(a: Int, b: Int): Int = a.+(b)
val sum2 = (a: Int, b: Int) => a + b
def fn(f: (Int, Int) => Int) = {
println(f(3, 10))
}
def main(args: Array[String]): Unit = {
fn(sum)//输出13,Scala会自动将sum方法转换成函数
fn(sum2)//输出13
}