В этой статье я объясню, что такое функция более высокого порядка и как ее реализовать на языках программирования, таких как C# и Python.
Таким образом, HOF – это функция, которая либо принимает функцию в качестве аргумента, либо возвращает функцию. Этот тип функции имеет реализации во многих языках программирования, таких как JavaScript, Python, Go и т. Д.
Давайте построим очень простую функцию под названием Dooperation ()
которые принимают функцию в качестве первого параметра и два числа и возвращают функцию, которая принимает два числа в качестве аргументов, У нас также есть функция, называемая sum ()
Это возвращает суммирование двух чисел.
Python:
def doOperation(operation, num1, num2): return operation(num1, num2) def sum(number1, number2): return number1 + number2 doOperation(sum, 2, 3) ----------- Output: 5 -----------
Csharp
public int DoSomthing(Funcsum, int num1,int num2) => sum(num1, num2); public int sum(int number1, int number2) => number1 + number2; DoSomthing(sum, 2, 3) ---------------- Output: 5 ----------------
В примере CSHAP мы используем встроенный делегат Func
которые занимают 2 целых числа и верните целое число, чтобы назначить сумма
функционируйте с этим.
Таким образом, с этой реализацией мы уже применяем функцию более высокого порядка.
Другой пример
Мы хотим создать Filter ()
Функция для фильтрации массива, основанной на функции, мы можем передать его для этого Filter ()
функция
Python:
def filter(arr, action): result= [] for num in arr: if(action(num)): result.append(num) return result def isOddNumber(num): return num % 2 != 0 filter([1, 2, 3, 4, 5], isOddNumber) ---------------- Output: [1,3,5] ----------------
Csharp
public static int[] Filter(int[] arr, Funcfunc) => arr.Where(func).OrderBy(n => n).ToArray(); public static bool isOddNumber(int number) => number % 2 != 0; Filter([1,2,3,4,5], isOddNumber) ------------------ Output: [1,3,5] ------------------
Надеюсь, это будет полезно, и спасибо за чтение!
Оригинал: “https://dev.to/moataz_allam/higher-order-function-using-python-and-c-o3e”