⚙️
Workshop Guide
  • Workshop
    • 💳Использование Workshop
    • ⬇️Установка модификации
  • Моды
    • 🌎Редактирование файлов локализации
    • 🎨Форматы цветов
    • ⁉️Проблемы с модификациями
    • 🔧MagicByteSharedLibrary
    • 🗑️DayZShop
    • 😎DayZSetManager 1.0.0-1.1.3
    • 😎DayZSetManager 2.0.0 +
    • 🥳NotPicksarAnims
    • 👬DayZPartyManager
    • 💵Magic Bank
    • 🎁MagicBattlePass
    • 🖌️MagicSkins
  • Документация MagicByteSharedLibrary
    • 🖥️UI
      • Система уведомлений
      • Система локализации
      • Группа виджетов
    • Модели вызова функций
      • Лямбда-функции
      • Асинхронное выполнение задач
      • Callback для нескольких результатов
    • 💽Файловая система
    • Коллекции
Powered by GitBook
On this page
  1. Документация MagicByteSharedLibrary
  2. Модели вызова функций

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

В рамках 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
PreviousМодели вызова функцийNextАсинхронное выполнение задач

Last updated 1 year ago