1. 程式人生 > >scala基本語法->高階函式、閉包、​柯里化

scala基本語法->高階函式、閉包、​柯里化

高階函式

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) } }