В рамках 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