package b
/**
* @author
* @date 2021/7/17 14:32
* @VERSION 1.0
*/
object work {
//对数组进行处理,将操作抽象出來,处理完毕后的结果返回一个新的数组
def f1(arr1:Array[Int],op:Int=>Int):Array[Int]={
for(a <- arr1 ) yield op(a)
}
def op(a:Int):Int={
a+1
}
//练习1:定义一个匿名函数,并将它作为值赋给变量fun。函数有三个参数,类型分别 为Int,String,Char,返回值类型为Boolean。
//要求调用函数fun(O,"",0')得到返回值为false,其它情况均返回true。
val f1=(a:Int,b:String,c:Char)=> !(a==0 && b=="" && c=='0')
/*
练习2:定义一个函数func,它接收一个Int类型的参数,返回一个函数(记作f1)。
它返回的函数f1,接收一个string类型的参数,同样返回一个函数(记作2)。函数f接
收一个Char类型的参数,返回一个Boolean的值。
要求调用函数func(0)("")(O')得到返回值为false,其它情况均返回true。
*/
def func(a:Int):String=>(Char=>Boolean)={
def f1(str:String):Char=>Boolean={
def f2(c:Char):Boolean={
!(c=='0' && str=="" && a==0)
}
f2
}
f1
}
//练习2 的匿名函数
val func2=(a:Int)=>(str:String)=>(c:Char)=> !(c=='0' && str=="" && a==0)
//练习2 的另一种写法
def func3(a:Int):String=>(Char=>Boolean) ={
str=>c=> !(c=='0' && str=="" && a==0)
}
def main(args: Array[String]): Unit = {
/* val array :Array[Int] =Array(1,2,3,4)
println(f1(array,op).foreach(print))*/
println(f1(1,"22",'0'))
println(func(0)("")('0'))
println(func2(0)("")('0'))
println(func3(0)("")('0'))
}
}
Scala 高阶函数-参数& 返回值练习
最新推荐文章于 2023-03-28 13:13:25 发布