Рубрики
Без рубрики

Функции высшего порядка в Python и C#

В этой статье я объясню, что такое функция более высокого порядка и как ее реализовать в программировании … Tagged с помощью Csharp, Python, функционального, программирования.

В этой статье я объясню, что такое функция более высокого порядка и как ее реализовать на языках программирования, таких как 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(Func sum, 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, Func func) =>
    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”