这里我写的是一些scala基础函数,每种函数后面会举出一个实例,需要注意的地方会在代码下方标注出来,希望对一些刚入门同学有帮助。。。。。。。。。。。。。。。。
1.普通函数
def max(a:Int,b:Int)={
if(a>b) { a } else { b }
}
println(max(1,100))
2.递归函数
def fun(num:Int):Int = {
if(num==1){ 1 }
else { num * fun(num-1) }
}
println(fun(5))
注:递归函数一定要指定函数的返回类型
3.参数有默认值的函数
def fun(a:Int=2,b:Int=3)={
a+b
}
fun(b=300)
注:调用有默认值得函数不用传参,如果传一个参默认传给了a,若想只给b传参必须要写上
4.可变长参数的函数
def fun(elems:String*)={
// elems.foreach(println)
elems.foreach(a=>{
println(a)
})
}
fun("a","b","c")
注:这里*的作用类似于java中可变参…
5.匿名函数
val fun =()=>{
println("hello world")
}
fun()
注:匿名函数在scala后期开发中会被广泛应用!!!
6.嵌套函数
def fun(a :Int)={
def fun1(num :Int):Int={
if(num==1){ 1 }
else{ num*fun1(num-1) }
}
fun1(a)
}
println(fun(5))
注:在fun()末尾要调用一下fun1(),否则fun()函数末尾是一个函数将返回unit
7.偏应用函数
import java.util.Date;
def showLog(d:Date,log:String): Unit ={
println(d+log)
}
val date = new Date()
val fun = showLog(date:Date,_:String)
fun("Hello")
注:偏应用函数就是先把函数其中的某一个或多个参数给定值,调用时可以不用传入参数
8. 高阶函数
(1)函数的参数是函数
def fun1(f:(Int,Int)=>Int)={
f(1111,2)
}
println(fun1(_+_))
注:参数函数可以自定义函数逻辑,从而去完成需求
(2)函数的返回是函数
def fun(a:Int,b:Int):(Int,Int)=>Int ={
def fun1(a:Int,b:Int)={
a+b
}
fun1
}
println(fun(1,2)(5,6))
注:函数的返回是函数时,要显式声明函数的返回类型
(3)函数参数和返回都是函数
def fun(f:(Int,Int)=>Int):(String,String)=>String ={
def fun1(string: String,string2: String)={
string+"$"+string2+f(8,9)
}
fun1
}
println(fun(_+_)("111111111","2222222222222"))
注:结合(1)和(2)理解(3)
9.柯里化函数
def fun(a:Int,b:Int)(c:Int,d:Int)={
a+b+c+d
}
println(fun(1,2)(3,4))