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...