Scala中的高階函式

2021-07-24 03:51:12 字數 1392 閱讀 3571

1.在變數中存放函式

(1)定義函式fun1

(2)將函式賦給乙個變數(注意函式名和下劃線之間有空格)       

(3)呼叫這個函式    

2.匿名函式

匿名函式沒有函式名,將函式賦給變數fun2。函式的引數是string型別,返回unit型別

3.高階函式

(1)函式的引數為函式的高階函式 

a)函式的第乙個引數是func函式,func函式的輸入引數型別為string,返回型別為unit。第二個引數為string型別

b)呼叫bigdata函式

(注)fun2函式(2.匿名函式中定義的函式)就是乙個輸入引數型別為string,返回型別為unit的函式,符合(1)中的定義

(2)返回值為函式的高階函式

定義乙個輸入引數content的型別為string型別的的函式func_returned,func_returned函式的返回值是輸入引數message的型別為string型別的的函式。(message:string)=>println(content+" "+message)整體是乙個匿名函式,所以func_returned函式的返回值就是乙個函式。

定義returned變數接收func_returned函式的返回值函式。此時,func_returned("spark")的返回函式是(message:string)=>println(spark+" "+message)

(3)高階函式的型別推斷

(注)因為func函式中只傳入了乙個引數,所以不需要再寫content  

(注)可簡寫為def spark(func:(string)=>unit,name:string)

呼叫spark函式:

a)可簡寫為:spark(name=>println(name),"scala")   //高階函式可進行型別推斷,所以不需要再定義name為string型別。其次,對於只有乙個引數的函式,可以略去引數外圍的括號

b)可再簡寫為:spark(println_ ,"scala")   //如果在函式的引數的作用體內,只使用一次這個引數的具體的值,可以將引數具體的名稱省掉,用下劃線代替

Scala高階函式

在scala中,無法直接操縱方法,只能直接操縱函式,所以需要使用 import scala math.val temp ceil val num 3.14 println fun temp num temp的型別是 double double,意為接受double引數並返回double的函式。能夠對...

Scala 高階函式

import scala.math.val num 3.14val func ceil 意味著確實指的是這個函式,而不是忘記了傳引數 func是乙個函式變數,內容儲存的是個函式 val v func num println v val arr array 1.0,3.14,4 map func 將函...

Scala高階函式

高階函式 higher order function 高階函式可以使用其他函式作為引數,進入方法內使用,或者使用函式輸出結果作為引數。object demo 函式1,返回當前時間納秒數,long型別 def time t long 可以簡寫為t long,long表示如果傳入引數為方法時返回值為lo...