scala之高阶函数
代码
/**
* 高阶函数
*
* 高阶函数要求参数是函数或者返回值是函数
*/
object HfunDemo extends App{
//高阶函数要求参数是函数或者返回值是函数
//参数是函数
val arr =Array(1,2,3,4,5)
val fun=(x:Int)=>x*2
//1.参数是函数(fun)
val res =arr.map(fun)
//2.参数是函数(匿名函数)
val res2 = arr.map((x:Int)=>x*2)
val res3 =arr.map(_*2)
println(res.toBuffer)
//返回值是函数
def urlBuilder(ssl:Boolean,domain:String):(String,String)=>String={
val schema= if(ssl)"https://" else "http://"
//返回下面这个匿名函数
(endpoint:String,query:String)=>s"$schema$domain/$endpoint?$query"
}
val dominName="www.1000phone.com"
//传入前两个参数
def getUrl:(String,String)=>String=urlBuilder(ssl = true, dominName)
val endopint= "users"
val query ="id=1"
//传入返回函数的后两个参数,并调用该返回函数
val res4 =getUrl(endopint,query)
println(res4)
}
运行结果
ArrayBuffer(2, 4, 6, 8, 10)
https://www.1000phone.com/users?id=1
Process finished with exit code 0