方法的定义
def m1(x:Int,y:Int):Int =x*y
def:当以方法的关键字
m1:方法名
(x:Int,y:Int):参数列表,两个参数,x和y类型都是Int,
:Int :返回值类型,如果没有返回值用unit表示 方法的返回值可以不指定返回类型,编译器可以自动推断出来,但是对于递归函数,必须指定返回类型
函数的定义
val f1 :(x:Int,y:Int)=>Int=x+y 使用f1(1,2)
函数和方法的区别:
- 可以像任何其他数据类型一样被传递和操作
- 函数是一个对象,继承自FuctionN
- 函数对象有apply、curried、toString、tupled这些方法。而方法不具有这些特性。
-
//定义一个方法 //方法m2参数,参数一个函数,函数的参数必须是两个Int类型 //返回值类型也是Int类型 def m1(f: (Int, Int) => Int) : Int = { f(2, 6) } //定义一个函数f1,参数是两个Int类型,返回值是一个Int类型 val f1 = (x: Int, y: Int) => x + y //定义一个函数f2,同f1相同 val f2 = (m: Int, n: Int) => m * n //main方法 def main(args: Array[String]) { //调用m1方法,并传入f1函数 val r1 = m1(f1) println(r1) //调用m1方法,并传入f2函数 val r2 = m1(f2) println(r2) }
方法转成函数,在方法名后面跟下划线
用法:m1 _