(1)表示函數的類型(Function Type)
例如:函數
1spa |
|
函數double的類型就是 (x: Int) => Int 或者 Int => Int
備註: 當函數只有一個參數的時候,函數類型裏面括起來函數參數的括號是能夠省略的。
使用函數的類型,就能夠定義函數變量(Function Value/Function Variable)
那麼如今定義一個函數變量:
var x : (Int) => Int = double
(2)匿名函數(Anonymous functions/Function Literals/Lambda)
例如:經過匿名函數定義一個函數變量xx
var xx = (x: Int) => x + 1
或者,給一個高階函數,傳遞一個函數:
val newList = List(1,2,3).map { (x: Int) => x * 2 }
3. By-Name Parameters
假設有以下兩個函數:
ci
1it 2io 3table 4function 5匿名函數 6變量 7 8 9 10 |
|
那麼對於函數doubles而言,它的參數x就是by-name的。若是調用doubles的時候,直接給個普通的值或者非函數變量。那麼doubles的執行結果就跟普通的函數沒有區別。可是當把一個返回值爲Int類型的函數,例如f(2),傳遞給doubles的時候。那麼f(2)會被先計算出返回值2,返回值2傳入doubles參與運算。運算完成之後,f(2)會被doubles在執行之後,再調用一遍。
4. case語句
1 2 3 4 5 6 7 8 |
|