1. 程式人生 > >Spark基礎-Scala高階函式

Spark基礎-Scala高階函式

核心
1、scala高階函式

package com.xlucas

/**
  * Created by xlucas on 2017/8/20 0020.
  *
  * 1、函式和變數一樣作為scala語言的一等公民,函式可以直接賦值給變數
  * 2、函式更多的方式是匿名函式,定義的時候只需要說明輸入引數的型別和函式體即可
  * 3、函式可以作為引數直接傳遞給函式,函式作為函式的引數傳遞的程式設計方式是稱之為高階函式
  * 4、函數語言程式設計的返回值可以是函式,當函式的返回值是函式的時候,這個時候就表明scala的函式實現了閉包
  * 閉包的內幕是:scala的函式背後是類和物件,所以scala的引數作為了物件的成員,後續可以繼續訪問
  * 5、複雜的函數語言程式設計中經常使用,可以維護變數在記憶體中的狀態,實現返回函式的鏈式功能
  */
object FunctionOop { def main(args: Array[String]): Unit = { val say=sayHello _ //這個需要用_符合來賦值操作 say("spark") val f=(name:String)=>println("hi" +name)//匿名函式 f("spark") def getName(func:(String)=>Unit,name:String): Unit ={//函式做為引數 func(name) } getName(f,"scala") Array(1
to 10: _* ).map{(item:Int)=>2*item}.foreach{x=>println(x)}//陣列來做為輸入在操作 def funResult(message:String)=(name:String)=>println(message+" :" +name) funResult("hello")("java")// currying 函式寫法 柯里化 } def sayHello(name:String): Unit ={ println("hi" + name) } }