1. 程式人生 > >scala 匿名函式

scala 匿名函式

1.匿名函式初探

Scala 中定義匿名函式的語法很簡單,箭頭左邊是引數列表,右邊是函式體,引數的型別是可省略的,Scala 的型別推測系統會推測出引數的型別。使用匿名函式後,我們的程式碼變得更簡潔了。

val numIncOne = (x:Int) => x + 1

上面的表示式就定義了一個接受一個Int型別輸入引數的匿名函式,使用起來也很簡單

numIncOne(2)

2輸入為空的匿名函式

val printFun = () => println("It's print function!")

呼叫:

printFun()

上面的匿名函式沒有接受任何引數,就是列印了一行字串而已。
需要注意的是,匿名函式的返回值的資料型別依賴於函式體的最後一行表示式的值,這個由程式自己判斷,匿名函式的返回值型別不能手工指定!

3.匿名函式的使用場景

1.函式變數(常量)
像我們前面舉的例子裡,都把匿名函式儲存為了一個常量。

2.在將一個匿名函式作為引數進行傳遞。這個在我們平時編碼過程中使用極多,因為scala是函數語言程式設計語言,函式是頭等公民,函式經常需要作為引數傳遞。如果給每個函式,尤其是那種一次性使用的函式起個合適的名字,那簡直要頭疼死了。在這種情況下,匿名函式就是最佳選擇。來看幾個特別簡單的例子:

val rawList = List(1,2,3,4,5,6)
println(rawList.filter(_>3)) //取大於3的數
println(rawList.map(x => x*2
)) //將所有數乘2