scala中函数和方法作为参数使用
有参的函数
直接看下面代码
def method1(arge1:Int,arge2:Int):Int={
arge1 + arge2
}
val funct1 = (arge1:Int,arge2:Int) =>{
arge1 - arge2
}
def method2(f:(Int,Int)=>Int):Int={
f(12,12)
}
val i = method2(method1)
println("方法传方法"+4)
val funct2 = (f:(Int,Int)=>Int) =>{
f(22,22)
}
val i1 = funct2(method1)
println("函数传方法"+i1)
def method3(f:(Int,Int)=>Int):Int={
f(4,1)
}
val i2 = method3(funct1)
println("方法传函数"+i2)
val funct3 = (f:(Int,Int)=>Int)=>{
f(5,1)
}
val i3 = funct3(funct1)
println("函数传函数"+i3)
如上定义啦一个函数和一个方法,在当作参数传入的时候没什么区别
方法会被转换为函数使用
无参的函数作为参数
// 调用方式一
def method1(): Unit ={
println("printmethod1")
}
def method2(m:() =>Unit)={
m()
}
method2(method1)
//调用方式二
def method11: Unit ={
println("printmethod11")
}
def method22(m: =>Unit)={
m
}
method22(method11)
//调用方式三
def method111(): Unit ={
println("printmethod111")
}
def method222(m:() =>Unit)={
m
}
method222(method111) //此处没有输出
上面调用方式三没有输出,只有一二的方式可以使用