瞭解什麼是高階函式,如何建立它們以及如何使用它們

瞭解什麼是高階函式,如何建立它們以及如何使用它們

A higher order function是一個函式,或者需要一個函式作為引數或返回的功能。這種型別的函式具有許多程式語言的實現,包括Go,JavaScript,Python等。並且它們傾向於成為面試中使用的問題。我曾多次與開發人員討論過這個概念,儘管他們每天都在不知不覺中使用過這個名稱,但他們並不熟悉這個名稱,所以我決定在帖子中討論這個主題,以便我們清楚地知道它們的含義和用法。由於該主題已在多種程式語言中廣泛使用,因此我將同時提供JavaScript和Python的程式碼示例。

一些簡單的例子

讓我們看一些高階函式的簡單示例,以進入主題並使用程式碼,然後我們將繼續構建一些我們常用的流行函式,這些例子是高階函式的示例。首先,讓我們構建一個非常簡單的函式doOperation,該函式帶有3個引數:

1、功能操作

2、number1

3、number2

此外,我們將建立一個sumBothNumbers操作,該操作將僅返回2個數字的和。

Python:

瞭解什麼是高階函式,如何建立它們以及如何使用它們

JavaScript:

瞭解什麼是高階函式,如何建立它們以及如何使用它們

在這種特殊情況下,doOperation即使沒有出錯,但它似乎也是多餘的,但在某些情況下它是有用的,而且doOperation函式可以是庫的一部分,例如,我們可以使用自己的操作對其進行擴充套件。

返回函式

接下來,我們將構建一個高階函式,該函式將返回一個函式。我們的multiplyBy函式將被呼叫,它將一個數字作為引數,並返回一個將其輸入乘以該數字的函式。

Python:

瞭解什麼是高階函式,如何建立它們以及如何使用它們

JavaScript:

瞭解什麼是高階函式,如何建立它們以及如何使用它們

構建filter(),map()和reduce()

1、filter():filtering函式具有2個引數,一個array和一個test函式,它返回一個包含所有透過測試的元素的新陣列。

Python:

瞭解什麼是高階函式,如何建立它們以及如何使用它們

JavaScript:

瞭解什麼是高階函式,如何建立它們以及如何使用它們

可以看出,我們的filter()函式非常容易編寫和使用,例如用於從陣列中獲取所有的數字。

2、map()又名mapping()mapping函式將帶有2個引數:an array和transform函式,它返回一個新的轉換陣列,其中每個專案都是transform在原始陣列的每個元素上呼叫的函式的結果。

Python:

瞭解什麼是高階函式,如何建立它們以及如何使用它們

JavaScript:

瞭解什麼是高階函式,如何建立它們以及如何使用它們

3、reduce():reducing函式將採用3個引數:一個reducer函式,一個initial value用於累加器的和一個array。對於陣列中的每個專案,都會呼叫reducer函式,並向其傳遞累加器和當前陣列元素。返回值分配給累加器。減少列表中的所有專案後,將返回累加值。

Python:

瞭解什麼是高階函式,如何建立它們以及如何使用它們

JavaScript:

瞭解什麼是高階函式,如何建立它們以及如何使用它們

感謝你您的閱讀。