高階函數

帶函數參數的函數因爲是一個接受函數參數的函數,故被稱爲高階函數,像以前講到的map()函數就是高階函數。以下例所示:app


上述代碼中,apply函數接受一個函數f做爲參數,接受一個Int類型的參數,進行f(v)運算,在下面又給出了f具體的定義(layout函數)。函數

 

一樣的,高階函數也能夠產出另外一個函數(即返回結果爲一個函數,而不是某個值或對象),以下例所示:性能


這裏函數rectangle的輸出是一個計算矩形周長的函數,矩形長已固定。spa

 

 

在高階函數中,常常將只須要執行一次的函數定義爲匿名函數做爲參數傳遞給高階函數,就好像map()filter()等高階函數中常常能看到使用了匿名函數做爲參數。匿名函數在這裏有一個特性可以幫助咱們寫出更容易閱讀的函數——參數推斷對象

正常狀況下,咱們使用匿名函數的方式以下:匿名函數


即在map函數中定義匿名函數(a: Double) => a * 3,可是因爲map函數知道你傳入的是一個類型爲(Double)=> Double類型的函數,故能夠簡化爲下面的代碼:基礎


而且若是匿名函數只有一個參數,則能夠省略(),繼續簡化:map


在此基礎上,若是參數在=>右邊只出現了一次,則能夠用_替換它:im

相關文章
相關標籤/搜索