import java.util.Date
object fun {
def main(args: Array[String]): Unit = {
//函数
def max(a:Int,b:Int)={
if(a>b){
a
}else{
b
}
}
def max2(a:Int,b:Int) = if(a>b) a else b
println(max(100,2))
/*
* 递归函数要指定函数的返回值类型
*/
def fun(num:Int):Int ={
if(num==1){
1
}else{
num*fun(num-1)
}
}
println(fun(3))
/*
* 参数有默认值的函数
*
*/
def fun2(a:Int=3,b:Int=3)={
a+b
}
println(fun2(2))
/*
* 可变长参数
*/
def fun3(s:String*)={
for(e<-s){
println(e)
}
}
fun3("d","g","r")
/*
* 匿名函数
*/
//这是匿名函数
// ()=>{
// println("我是匿名函数")
// }
//匿名函数调用
val a=(a:Int)=>{
println("我是匿名函数:"+a)
}
a(1)
/*
* 嵌套函数
*/
def fun7(a:Int)={
def fun8(b:Int):Int={
if(b==1)
1
else
b*fun8(b-1)
}
fun8(a)
}
println(fun7(5))
/*
* 偏应用函数
*/
def showlog(date:Date,log:String)={
println("date is "+date+",log is "+log)
}
val date=new Date()
// showlog(date,"a")
// showlog(date,"b")
//变化的用_
val fun9=showlog(date:Date,_:String)
fun9("a")
fun9("b")
/*
* 高阶函数
* 1、函数的参数是函数
* 2、函数的返回是函数
* 3、函数参数和返回都是函数
*/
//函数的参数是函数
def fun11(a:Int,b:Int):Int={
a+b
}
def fun10(s:String,f:(Int,Int)=>Int)={
val re=f(1,2)
s+"_"+re
}
println(fun10("zhazhalong",fun11))
//函数的返回是函数
def fun12(a:Int,b:Int):(String,String)=>String={
def fun13(s:String,s1:String)={
s+"*"+s1
}
fun13
}
println(fun12(10,20)("s","g"))
//函数的参数和返回都是函数
def fun14(f:(Int,Int)=>Int):(String,String)=>String={
def fun15(s1:String,s2:String):String={
s1+"*"+s2
}
fun15
}
println(fun14(fun11)("a","b"))
//柯里化函数
def fun16(a:Int,b:Int)(c:Int,d:Int)={
a+b+c+d
}
println(fun16(1,2)(2,4))
}
}
分享到:
最好再详细点
以后多发点哦
给你点赞
以后多多交流
看了那么多博客,就你的能看懂
最好再详细点
好