好程序員大數據教程Scala系列之高階函數

好程序員大數據教程Scala系列之高階函數
1.1. 概念
若是一個函數的傳入參數爲函數或者返回值是函數,則該函數即爲高階函數。程序員

1.2. 傳入參數爲函數
Scala中,函數是頭等公民,和數字同樣。不只能夠調用,還能夠在變量中存放函數,也能夠做爲參數傳入函數,或者做爲函數的返回值。dom

圖片1.png

1.3. 傳入參數爲匿名函數
在Scala中,你不須要給每個函數命名,就像沒必要給每一個數字命名同樣,將函數賦給變量的函數叫作匿名函數函數

圖片2.png

還能夠大數據

圖片3.png

1.4. 傳入參數爲方法(隱式轉換方法到函數)
在Scala中,方法和函數是不同的,最本質的區別是函數能夠作爲參數傳遞到方法中ui

case class WeeklyWeatherForecast(temperatures: Seq[Double]) {url

private def convertCtoF(temp: Double) = temp * 1.8 + 32
//方法convertCtoF做爲參數傳入
def forecastInFahrenheit: Seq[Double] = temperatures.map(convertCtoF)
}spa

1.5.返回值爲函數
//返回值爲函數類型:(String, String) => String
def urlBuilder(ssl: Boolean, domainName: String): (String, String) => String = {
val schema = if (ssl) "https://" else "http://"
(endpoint: String, query: String) => s"$schema$domainName/$endpoint?$query"
}blog

val domainName = "www.example.com"
def getURL = urlBuilder(ssl=true, domainName)
val endpoint = "users"
val query = "id=1"
val url = getURL(endpoint, query) // "https://www.example.com/users?id=1": String教程

相關文章
相關標籤/搜索