溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

好程序員大數(shù)據(jù)教程Scala系列之高階函數(shù)

發(fā)布時間:2020-08-10 18:31:54 來源:網(wǎng)絡(luò) 閱讀:184 作者:wx5da18b5c4b01e 欄目:大數(shù)據(jù)

好程序員大數(shù)據(jù)教程Scala系列之高階函數(shù)

1.1. 概念

如果一個函數(shù)的傳入?yún)?shù)為函數(shù)或者返回值是函數(shù),則該函數(shù)即為高階函數(shù)。

1.2. 傳入?yún)?shù)為函數(shù)

Scala中,函數(shù)是頭等公民,和數(shù)字一樣。不僅可以調(diào)用,還可以在變量中存放函數(shù),也可以作為參數(shù)傳入函數(shù),或者作為函數(shù)的返回值。

好程序員大數(shù)據(jù)教程Scala系列之高階函數(shù)

1.3. 傳入?yún)?shù)為匿名函數(shù)

Scala中,你不需要給每一個函數(shù)命名,就像不必給每個數(shù)字命名一樣,將函數(shù)賦給變量的函數(shù)叫做匿名函數(shù)

好程序員大數(shù)據(jù)教程Scala系列之高階函數(shù)

還可以

好程序員大數(shù)據(jù)教程Scala系列之高階函數(shù)

1.4. 傳入?yún)?shù)為方法(隱式轉(zhuǎn)換方法到函數(shù))

Scala中,方法和函數(shù)是不一樣的,最本質(zhì)的區(qū)別是函數(shù)可以做為參數(shù)傳遞到方法中

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

??private?def?convertCtoF(temp: Double) = temp * 1.8?+ 32
??//方法convertCtoF作為參數(shù)傳入
??def?forecastInFahrenheit: Seq[Double] = temperatures.map(convertCtoF)
}

1.5.返回值為函數(shù)

//返回值為函數(shù)類型:(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"
}

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

?


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI