Лямбда-функции

В рамках MBSL лямбда-функциями называются не анонимные функции, а объекты, реализующие небольшие строго типизированные функции, передаваемые в качестве аргументов. В MBSL реализовано 5 основных базовых классов таких функций:

class MBSL_LambdaBase0<Class ReturnType> : Managed
{
	ReturnType Execute();
}

class MBSL_LambdaBase1<Class ReturnType, Class T1> : Managed
{
	ReturnType Execute(T1 arg1);
}

class MBSL_LambdaBase2<Class ReturnType, Class T1, Class T2> : Managed
{
	ReturnType Execute(T1 arg1, T2 arg2);
}

class MBSL_LambdaBase3<Class ReturnType, Class T1, Class T2, Class T3> : Managed
{
	ReturnType Execute(T1 arg1, T2 arg2, T3 arg3);
}

class MBSL_LambdaBase4<Class ReturnType, Class T1, Class T2, Class T3, Class T4> : Managed
{
	ReturnType Execute(T1 arg1, T2 arg2, T3 arg3, T4 arg4);
}

Для использования данного класса и передачи его экземпляра в качестве аргумента необходимо создать класс, наследующий нужный из приведённых выше базовых классов, и переопределить в нём метод Execute. Ниже приведён пример реализации функции сложения двух целых чисел с помощью подобного объекта и его использование.

class Sum : MBSL_LambdaBase2<int, int, int>
{
    int Execute(int arg1, int arg2)
    {
        return arg1 + arg2;
    }
}

int DoOperation(int a, int b, MBSL_LambdaBase2<int, int, int> operation)
{
    return operation.Execute(a, b);
}

Print(DoOperation(2, 5, new Sum()); //7

Last updated