区别:
- 方法与函数的定义语法不同;
- 方法一般定义在类、特质、object中;
- 方法可以共享所在类、特质、object的属性;
- 可以直接调用函数,也可以将其存放到一个变量中,也可以做为参数传递给其他方法或者函数,也可以作为返回值;
练习
- 可以把函数作为参数传递给一个方法;
object FunctionAndMethod { def main(args: Array[String]): Unit = { println(m(f)) } //这是一个方法,入参是一个函数,该函数有两个Int类型的入参,并且返回值也是Int类型,方法体,是直接调用入参函数 def m(f: (Int, Int) => Int) = f(5, 1) val f = (x: Int, y: Int) => x - y } |
- 方法可以转换成函数
- 使用方法名+空格+下划线 即可显示的将方法转换成函数
object FunctionAndMethod { def main(args: Array[String]): Unit = { println(m(f)) //如果方法的入参是一个方法,那么系统会自动默认将该入参方法转换成函数 println(m(m2)) //方法名+空格+下划线可以手动将方法转换成函数 println(m(m2 _)) } //这是一个方法,入参是一个函数,该函数有两个Int类型的入参,并且返回值也是Int类型,方法体,是直接调用入参函数 def m(f: (Int, Int) => Int) = f(5, 1) def m2(x: Int, y: Int) = x - y val f = (x: Int, y: Int) => x - y } |