scala基本語法->高階函式、閉包、柯里化
阿新 • • 發佈:2018-12-25
高階函式
object test {
def main(args: Array[String]): Unit = {
function1((x:Int)=>x+"test")
}
def function1(x:Int=>String): Unit ={ //該函式的引數是一個函式(輸入引數是int,返回值時string)
print(x(11)) //給該函式的引數裡的函式的引數賦值為11
}
def f2(x:Int):(Int,Int)=>Int={ //呼叫該函式返回函式(該返回函式是輸入int,返回Int型別的)
def f3(y:Int,z:Int):Int={ //定義該返回函式
x+y+z
}
f3 //return 該返回函式
}
def f4(x:Int):(Int,Int)=>Int={ //這是上一個函式的簡寫
(y:Int,z:Int)=>x+y+z //別名函式不需要呼叫直接返回
}
}
scala 的閉包:函式裡面引用外面類成員變數叫作閉包.例:
var a=3 val b=(i:Int)=>i*a
柯里化
def f4(x:Int):(Int,Int)=>Int={ //這是f2函式的簡寫
(y:Int,z:Int)=>x+y+z //別名函式不需要呼叫直接返回
}
def curring(x:Int)(y:Int,z:Int):Int=x+y+z //再將f4柯里化
map裡的引數是函式
object test{
def main(args: Array[String]): Unit = {
val nums=Seq(2,3,4)
val newnums=nums.map(_*2) //Lists(4,6,8 ) _*2 是函式 x=>x*2的縮寫
println(newnums)
}
}